GARANTIR DESCONTO

Fórum Formato de Datas (ano) - Funciona em partes. #343542

23/07/2007

0

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

Responder

Posts

24/07/2007

Emerson Nascimento

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;



Responder

Gostei + 0

24/07/2007

Rodrigorpb

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:


Responder

Gostei + 0

24/07/2007

Rodrigorpb

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar