Formato de Datas (ano) - Funciona em partes.

Delphi

23/07/2007

Olá amigos,
Estou com o seguinte problema. Tenho uma tabela com um campo ANO, então eu coloquei no form uma DBedit ligado a este campo para que o usuário possa digitar o ano, até ai tudo bem, mas o problema, que tanto na consulta quanto nos outros movimentos o digito 07 é totalmente diferentes do 2007 no banco de dados(obvio), gostaria de saber se alguém tem uma idéia de quando a pessoa digitasse no DBedit o ano com dois digitos (ex: 07) ele colocasse o ano com 4 digitos (ex: 2007) automáticamente ao sair do DBEdit. Já tentei várias formas, eis a melhor forma que fiz.

Mas desta forma quando digito, exemplo 1998 ele coloca 2098 por causa do format, alguém tem uma forma melhor para esse problemas?

procedure TFAgenta.edAnoExit(Sender: TObject);
Var
  dData : TDateTime;
begin
If Trim(edAno.Text) <> ´´ Then
Begin
   dData := EncodeDate(StrToInt(edANo.text), 01, 01);
   edAno.Text := FormatDateTime(´20yy´, dData);
End;


Abrigado.


Rodrigorpb

Rodrigorpb

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

23/07/2007

tente assim:
procedure TFAgenta.edAnoExit(Sender: TObject);
var
   sData: string;
begin
   try
      strtoint(edAno.Text);
      sData := ´01/01/´+edANo.text;
      edAno.Text := FormatDateTime(´yyyy´, StrToDate(sData));
   except
      ShowMessage(´Ano inválido!´);
   end;
end;



GOSTEI 0
Rodrigorpb

Rodrigorpb

23/07/2007

Vou fazer do jeito que você passou, uma vez fiz quase igual no lugar do ´20yy´ eu havia colocado ´yyyy´, mas quando eu digitava 8 por exemplo ele colocava 0008 e não 2008. Dai deixei obrigatótio para a pessoa colocar os 4 digitos:

procedure TFAgenda.edAnoExit(Sender: TObject);
Var
 nLetra : integer;
begin
If Trim(edAno.Text) <> ´´ Then
Begin
 nLetra := Length(Trim(edAno.Text));
 If nLetra <> 4 Then
 Begin
  MessageDlg(´O campo Ano tem que ser digitado com 4 digitos.´, mtInformation, [mbOK],0);
  edAno.SetFocus;
  Abort;
 End;
End;
end;


Depois posto o resultado.

Vlw :wink:


GOSTEI 0
Rodrigorpb

Rodrigorpb

23/07/2007

emerson.en,

Terceira vez que já me salva. Deu tudo certinho. Não sei qual é a diferença no primeiro que eu fiz e neste que você me passou mas ficou redondo. Acho que é por causa do encodedate sei lá. AUHhuhUAHu

Obrigado.

Vlw.


GOSTEI 0
POSTAR