Validar uma data(aceitar data em branco)
Olah pessoal!!
ALGUEM PODE ME AJUDAR:
Eu tenho uma dbedit ligado com uma tabela (interbase), esse campo e do tipo date(naum eh not null), usei esse procedimento no evento onexit do dbedit:
procedure TFrmVeiculos.DBEdit9Exit(Sender: TObject);
begin
if not TbVeiculos.FieldByName(´DT_VENC_APOL´).isnull then
begin
try
strtodate(DBEdit9.text);
except
on EConvertError do
begin
showmessage(´Data Inválida´);
dbedit9.SetFocus;
end;
end;
end;
end;
Com esse procedimento consegui resolver uma parte do problema
se o usuario passar pelos campos ele aceita o campo em branco normal, mas se o usuario parar no dbedit e digitar uma data, apagar e tentar sair ele da um erro de data invalida, e naum mostra a minha mensagem!!!
soh mostra minha mensagem quando o usuario digita a data invalida...
executando o programa usando o F7 eu percebi que ele da esse erro sem mesmo ter efetuado uma linha de comando do onexit do dbedit!!!(serah que eh uma erro padrao do delphi)
Eu preciso que ele aceite data em branco!!! e que aceite apagar uma data
e que soh de a mensagem de erro quando for data invalida
ALGUEM PODE ME AJUDAR:
Eu tenho uma dbedit ligado com uma tabela (interbase), esse campo e do tipo date(naum eh not null), usei esse procedimento no evento onexit do dbedit:
procedure TFrmVeiculos.DBEdit9Exit(Sender: TObject);
begin
if not TbVeiculos.FieldByName(´DT_VENC_APOL´).isnull then
begin
try
strtodate(DBEdit9.text);
except
on EConvertError do
begin
showmessage(´Data Inválida´);
dbedit9.SetFocus;
end;
end;
end;
end;
Com esse procedimento consegui resolver uma parte do problema
se o usuario passar pelos campos ele aceita o campo em branco normal, mas se o usuario parar no dbedit e digitar uma data, apagar e tentar sair ele da um erro de data invalida, e naum mostra a minha mensagem!!!
soh mostra minha mensagem quando o usuario digita a data invalida...
executando o programa usando o F7 eu percebi que ele da esse erro sem mesmo ter efetuado uma linha de comando do onexit do dbedit!!!(serah que eh uma erro padrao do delphi)
Eu preciso que ele aceite data em branco!!! e que aceite apagar uma data
e que soh de a mensagem de erro quando for data invalida
Leandro Jacomete
Curtidas 0
Respostas
Okama
12/03/2003
Olá, trabalhar com DBEdit com certeza é mais prático, porém perde-se o controle do componente, o que ocorre é a validação da data na base de dados e não no OnExit.
Você tem dois caminhos, validar a data na base ou trocar por um Edit (que eu acho mais fácil) e usar esse código:
try
strtodate(DBEdit9.text);
except
on EConvertError do
[b:b6f31cbd42] if Edit9.text <> ´´ then begin[/b:b6f31cbd42]
showmessage(´Data Inválida´);
Edit9.SetFocus;
end;
end;
Você tem dois caminhos, validar a data na base ou trocar por um Edit (que eu acho mais fácil) e usar esse código:
try
strtodate(DBEdit9.text);
except
on EConvertError do
[b:b6f31cbd42] if Edit9.text <> ´´ then begin[/b:b6f31cbd42]
showmessage(´Data Inválida´);
Edit9.SetFocus;
end;
end;
GOSTEI 0
Leandro Jacomete
12/03/2003
Como eu faço para validar a data na base!!!
Olá, trabalhar com DBEdit com certeza é mais prático, porém perde-se o controle do componente, o que ocorre é a validação da data na base de dados e não no OnExit.
Você tem dois caminhos, validar a data na base ou trocar por um Edit (que eu acho mais fácil) e usar esse código:
try
strtodate(DBEdit9.text);
except
on EConvertError do
[b:93a91389b4] if Edit9.text <> ´´ then begin[/b:93a91389b4]
showmessage(´Data Inválida´);
Edit9.SetFocus;
end;
end;
GOSTEI 0
Okama
12/03/2003
Você precisa inserir um Table, Query, Ado ou semelhante (Ex. Table1).
Em tempo de projeto abra a Table1, dê dois cliques no componente, na janela que se abrirá clique com o segundo botão e adicione todos os campos.
Clique no Campo desejado. No Object Inpector clique na aba Events e dois cliques em ONVALIDADE e insira esse código:
try
StrToDate(Sender.Text);
except
On EconvertError do
if Sender.Text <> ´´ then begin
Showmessage(´Data Inválida´);
DBEdit9.SetFocus;
end;
end;
O problema de usar isso é que sua tabela tem que ser sempre essa e se estiver usando um Query, não pode mudar a consulta e você deve prever que somente o componente DBEdit9 acessará esse evento, pois se você usar essa table em outro módulo que não exista DBEdit9 ocorrerá erro.
Um Abraço,
Em tempo de projeto abra a Table1, dê dois cliques no componente, na janela que se abrirá clique com o segundo botão e adicione todos os campos.
Clique no Campo desejado. No Object Inpector clique na aba Events e dois cliques em ONVALIDADE e insira esse código:
try
StrToDate(Sender.Text);
except
On EconvertError do
if Sender.Text <> ´´ then begin
Showmessage(´Data Inválida´);
DBEdit9.SetFocus;
end;
end;
O problema de usar isso é que sua tabela tem que ser sempre essa e se estiver usando um Query, não pode mudar a consulta e você deve prever que somente o componente DBEdit9 acessará esse evento, pois se você usar essa table em outro módulo que não exista DBEdit9 ocorrerá erro.
Um Abraço,
GOSTEI 0