Array
(
)

Tratar Data

Fernando_ramos
   - 02 mar 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!


Paullsoftware
   - 03 mar 2006

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;


Fernando_ramos
   - 03 mar 2006

Amigo,

Fiz assim:


Citação:

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!


Marco Salles
   - 03 mar 2006


Citação:
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


Fernando_ramos
   - 04 mar 2006

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!


Carlos Rausch
   - 04 mar 2006


Citação:
=´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!


If mskdata.text <> ´ / / ´ then


Sandercomputacao
   - 07 mar 2006

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..


Marco Salles
   - 07 mar 2006

sandercomputacao , 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 :?: :?: :?:


Sandercomputacao
   - 07 mar 2006


Citação:
sandercomputacao , 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 :?: :?: :?:


Realmente deu certo Marcos..
Obrigado!