Tratar Data

02/03/2006

Amigos,

Boa tarde.
Possuo um campo do tipo TMaskEdit, que possui a mascara: !99/99/9999;1;_

A pergunta é...

como tratar esta campo para não ser inserido datas inválidas e menores do que a data atual?

obrigado amigos!


Fernando_ramos

Respostas

03/03/2006

Paullsoftware

já tentou algo assim:

try
if MskData.Text < Date then
begin
ShowMessage(´A Data não pode ser inferior a Atual!´);
MskData.Setfocus;
MskData.Clear;
Exit;
end
else
begin
// comandos se a data for verdadeira
end
Except
on msg: Exception do
begin
showMessage(´A Data informada não é uma data válida!´);
end;


Responder Citar

03/03/2006

Fernando_ramos

Amigo,

Fiz assim:

try if strtodate(MskData.Text) < DATE then begin ShowMessage(´A Data não pode ser inferior a Atual!´); MskData.Setfocus; MskData.Clear; Exit; end else begin ShowMessage(´DATA VALIDA!´); end; Except on msg: Exception do begin showMessage(´A Data informada não é uma data válida!´); end; end;


na primeira linha estava apresentando erro por MskData.Text ser STRING diferente do tipo DATA!

então mudei...

ai percebi que ele não entra na excessão! tipo..se eu nao preencher nada deixar apenas ´ / / ´, o delphi mostra erro, dizendo que ´ / / ´ é uma data invalida!

se puder me ajudar!


Responder Citar

03/03/2006

Marco Salles

ai percebi que ele não entra na excessão! tipo..se eu nao preencher nada deixar apenas ´ / / ´, o delphi mostra erro, dizendo que ´ / / ´ é uma data invalida! se puder me ajudar!


Esta mensagem que o delphi esta lhe apresentando , se voce executar o programa usando o exe. ela não aparecera.. Esta mensagem é normal e mesmo que voce trate um eventual erro , ela sempre aparecera via projeto, salvo se voce desabilitar esta opção no ide do delphi..

:wink:
Tente ir no executavel , na pasta aonde ele esta gravado e execute o programa por lá.. Veja a diferença

Agora , se voce quiser , informar ao usuário , que a data esta em branco , ao inves de dizer que le não é uma data válida , ai ja é outra historia


Responder Citar

04/03/2006

Fernando_ramos

amigo Marco Salles,

realmente chamando pelo .exe funcionou numa boa!
Não sabia dessa.....vlw!!

Outra coisa...

Como eu poderia implementar, caso a data não fosse preenchida...(em branco).

abraços!


Responder Citar

04/03/2006

Carlos Rausch

amigo Marco Salles, realmente chamando pelo .exe funcionou numa boa! Não sabia dessa.....vlw!! Outra coisa... Como eu poderia implementar, caso a data não fosse preenchida...(em branco). abraços!


If mskdata.text <> ´ / / ´ then


Responder Citar

07/03/2006

Sandercomputacao

Galera, eu to com uma dúvida neste componente, se eu digitar uma data inválida ou uma data superior a data de hoje esta funcionando a validação corretamente, porém ao digitar uma data incompleta, tipo: 10/2_/____ e dou ENTER ele me gera o seguinte erro: invalid imput value, alguém sabe como validar este erro??

Obrigado a Todos..


Responder Citar

07/03/2006

Marco Salles

[b:1fe8dd2528]sandercomputacao[/b:1fe8dd2528] , coloque a mascara da seguinte forma
!99/99/9999;1;_ ou
!99/99/9999;0;_ ....

O Nove na mascara , significa digitaçao não obrigatoria.. Ja mascara contendo zero significa digitação obrigatoria..

O Final Um na mascara significa Salvar Literias(Que nesses caso é a Barra ´/´) e o final zero na mascara significa , que não salva os literias

fluiu :?: :?: :?:


Responder Citar

07/03/2006

Sandercomputacao

[quote:949ac3ed95=´Marco Salles´][b:949ac3ed95]sandercomputacao[/b:949ac3ed95] , coloque a mascara da seguinte forma
!99/99/9999;1;_ ou
!99/99/9999;0;_ ....

O Nove na mascara , significa digitaçao não obrigatoria.. Ja mascara contendo zero significa digitação obrigatoria..

O Final Um na mascara significa Salvar Literias(Que nesses caso é a Barra ´/´) e o final zero na mascara significa , que não salva os literias

fluiu :?: :?: :?:[/quote:949ac3ed95]

Realmente deu certo Marcos..
Obrigado!


Responder Citar