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


Anonymous

Anonymous

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


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.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar