ajuda-me por favor!!!!
21/03/2003
0
Terminei meu programa de controle de veiculos!! e estou com um problema!!! que ninguem consegue resolver!! ele parece facil de resolver mas não eh não!!!
no cadastro de veiculos eu tenho um campo data(data de apolice do veiculo) e esse campo é do tipo date e não é obrigatorio, pois um veiculos pode não estar segurado....
o problema e o seguinte ele teria que deixar passar data em branco!!!
se o usuario passar pelo campo usando TAB ele deixa passar normal, mas se o usuario para no campo digitar algo apagar e tentar sair ele da um erro de data invalida ele tenta converter a mascara!!! quando ele da esse erro ele nem entrar em nenhuma linha do código, pois execute o programa usando o F7 e verifiquei que ele da o erro antes mesmo de executar o onexit do dbedit!!!!
eu ja usei esse codigo mas nada adiantou>>>
procedure TFrmVeiculos.DBEdit9Exit(Sender: TObject);
begin
if not TbVeiculos.FieldByName(´DT_VENC_APOL´).isnull then
begin
try
strtodate(DBEdit9.text); //tentativa 1
except
on EConvertError do
begin
showmessage(´Data Inválida´);
dbedit9.SetFocus;
end;
end;
end;
end;
procedure TFrmVeiculos.DBEdit11Exit(Sender: TObject);
begin
if (dbedit11.text) <>´ / / ´ then
begin
try
strtodate(DBEdit11.text); //tentativa 2
except
on EConvertError do
begin
showmessage(´Data Inválida´);
dbedit11.SetFocus;
end;
end;
end;
end;
ele nem entra no bloco de comando a mensagem de erro que da é em ingles !!!
no cadastro de veiculos eu tenho um campo data(data de apolice do veiculo) e esse campo é do tipo date e não é obrigatorio, pois um veiculos pode não estar segurado....
o problema e o seguinte ele teria que deixar passar data em branco!!!
se o usuario passar pelo campo usando TAB ele deixa passar normal, mas se o usuario para no campo digitar algo apagar e tentar sair ele da um erro de data invalida ele tenta converter a mascara!!! quando ele da esse erro ele nem entrar em nenhuma linha do código, pois execute o programa usando o F7 e verifiquei que ele da o erro antes mesmo de executar o onexit do dbedit!!!!
eu ja usei esse codigo mas nada adiantou>>>
procedure TFrmVeiculos.DBEdit9Exit(Sender: TObject);
begin
if not TbVeiculos.FieldByName(´DT_VENC_APOL´).isnull then
begin
try
strtodate(DBEdit9.text); //tentativa 1
except
on EConvertError do
begin
showmessage(´Data Inválida´);
dbedit9.SetFocus;
end;
end;
end;
end;
procedure TFrmVeiculos.DBEdit11Exit(Sender: TObject);
begin
if (dbedit11.text) <>´ / / ´ then
begin
try
strtodate(DBEdit11.text); //tentativa 2
except
on EConvertError do
begin
showmessage(´Data Inválida´);
dbedit11.SetFocus;
end;
end;
end;
end;
ele nem entra no bloco de comando a mensagem de erro que da é em ingles !!!
Anonymous
Curtir tópico
+ 0
Responder
Posts
22/03/2003
Anonymous
Sugestão:
Sempre que houver uma dúvida que não quer calar, um erro esquisito assim, tente outra alternativa, que ao passar do tempo, seus conhecimentos vão aumentar e você acaba descobrindo a solução de um erro antigo.
Neste caso, em um campo tipo data, utilize um componente diferente. Específico para data, o da biblioteca RxLib por exemplo. Existem vários na internet, é só procurar. Geralmente o componente mesmo faz a consistência de data vazia ou inválida.
Experimente.
Valeu
Rodrigo
Sempre que houver uma dúvida que não quer calar, um erro esquisito assim, tente outra alternativa, que ao passar do tempo, seus conhecimentos vão aumentar e você acaba descobrindo a solução de um erro antigo.
Neste caso, em um campo tipo data, utilize um componente diferente. Específico para data, o da biblioteca RxLib por exemplo. Existem vários na internet, é só procurar. Geralmente o componente mesmo faz a consistência de data vazia ou inválida.
Experimente.
Valeu
Rodrigo
Responder
23/03/2003
Anonymous
Leandro:
Experimente trocar a linha
´ f not TbVeiculos.FieldByName(´DT_VENC_APOL´).isnull then ´
por
´ if dbedit9.text <> emptystr then ´ // ou <> ´ / / ´
ou seja, somente SE o conteúdo da dbedit9 for diferente de ´vazio´
( ... <> emptystr...) é que o fluxo do programa entrará no bloco try....
except.
Note que vc estava fazendo a verificação do campo data, NO CAMPO DA TABELA (TField), ANTES de ter gravado o conteúdo da dbedit9...
Embora o dbedit apresente o conteúdo de um campo de uma tabela, ela
mostra o valor do campo QUE ESTÁ GRAVADO na tabela! Resumindo:
alterações nos componentes dbedit somente serão atualizados na tabela
correspondente após um post, find, locate, filter, recordcount, etc...
Espero ter ajudado. CarlosRM.
Experimente trocar a linha
´ f not TbVeiculos.FieldByName(´DT_VENC_APOL´).isnull then ´
por
´ if dbedit9.text <> emptystr then ´ // ou <> ´ / / ´
ou seja, somente SE o conteúdo da dbedit9 for diferente de ´vazio´
( ... <> emptystr...) é que o fluxo do programa entrará no bloco try....
except.
Note que vc estava fazendo a verificação do campo data, NO CAMPO DA TABELA (TField), ANTES de ter gravado o conteúdo da dbedit9...
Embora o dbedit apresente o conteúdo de um campo de uma tabela, ela
mostra o valor do campo QUE ESTÁ GRAVADO na tabela! Resumindo:
alterações nos componentes dbedit somente serão atualizados na tabela
correspondente após um post, find, locate, filter, recordcount, etc...
Espero ter ajudado. CarlosRM.
Responder
Clique aqui para fazer login e interagir na Comunidade :)