Formato de Datas (ano) - Funciona em partes.
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?
Abrigado.
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
Curtidas 0
Respostas
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
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:
Depois posto o resultado.
Vlw :wink:
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
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.
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