Erro com datas (DBExpress/Firebird/D7)
Por que sempre que recupero uma data (dd/mm/yyyy) do GDB com um TDBEdite e logo em seguida quero limpar/apagar o mesmo, o sistema retorno a mensagem de ´data inválida´? Como resolvo isso? O sistema grava certinho e recupera a data certanha. Estou utilizando DBExpres + Firebird + D7.
Obrigado e aguardo qualquer ajuda.
Obrigado e aguardo qualquer ajuda.
Aprendiz_ce
Curtidas 0
Respostas
Marco Salles
21/08/2008
hummmm...
erro clássico .... Vc deve ter alguma mascara no field .
tem que programar o evento ongettext
erro clássico .... Vc deve ter alguma mascara no field .
tem que programar o evento ongettext
GOSTEI 0
Catunda
21/08/2008
Se vc quer apenas limpar o DbEdit sem alterar o valor do campo, basta fechar o dataset.
Mas se pretende apagar o valor da data precisa dar um clear nela. Exp:
ClientDataSet1Dtnascimento.Clear;
Solamente isto.
Mas se pretende apagar o valor da data precisa dar um clear nela. Exp:
ClientDataSet1Dtnascimento.Clear;
Solamente isto.
GOSTEI 0
Marco Salles
21/08/2008
ClientDataSet1Dtnascimento.Clear;
Catunda isto funciona como opção de Limpar , mas não resolve o Problema de Edição ...
Mesmo que voce Limpe este Campo se o Usuário
Digitar uma Data Válida e depois dar um backspace por exemplo , a Titulo de Limpar a Data ele obtera o Erro ao sair do Controle DataWare.
< Estou falando de campos que Tem mascarás nos TFields >
Então a Saida é usar o Evento OnGetText.
GOSTEI 0
Catunda
21/08/2008
Como ele falou: ´... e logo em seguida quero limpar/apagar o mesmo,...´
Sem o Clear ele não consegue limpar o campo, seja qual for a mascara utilizada.
Mas para um controle completo do campo, basta acrescentar o codigo abaixo ao evento OnSetText da variável correspondente à data:
try
if Trim(Text)=´/ /´ then Sender.Clear
else Sender.AsString:=Text;
except
on e:econverterror do
begin
ShowMessage(´Data inválida!´);
Abort;
end;
end;
É a mesma rotina que utilizo e nunca falhou.
Sem o Clear ele não consegue limpar o campo, seja qual for a mascara utilizada.
Mas para um controle completo do campo, basta acrescentar o codigo abaixo ao evento OnSetText da variável correspondente à data:
try
if Trim(Text)=´/ /´ then Sender.Clear
else Sender.AsString:=Text;
except
on e:econverterror do
begin
ShowMessage(´Data inválida!´);
Abort;
end;
end;
É a mesma rotina que utilizo e nunca falhou.
GOSTEI 0
Marco Salles
21/08/2008
Como ele falou: ´... e logo em seguida quero limpar/apagar o mesmo,...´
Sem o Clear ele não consegue limpar o campo, seja qual for a mascara utilizada
consegui ... cds.fieldByName(´Campo´).asstring:=´´;
Mas para um controle completo do campo, basta acrescentar o codigo abaixo ao evento OnSetText da variável correspondente à data:
OnSetText ... Claro ... E eu falando OnGetText . Não posso editar
http://forum.devmedia.com.br/viewtopic.php?t=94492&highlight=onsettex¬2A
GOSTEI 0
Aprendiz_ce
21/08/2008
[quote:9249da802e=´Marco Salles´]
consegui ... cds.fieldByName(´Campo´).asstring:=´´;
OnSetText ... Claro ... E eu falando OnGetText . Não posso editar
http://forum.devmedia.com.br/viewtopic.php?t=94492&highlight=onsettex¬2A[/quote:9249da802e]
Olá Marco,
O problema é edição do campo. O campo tá vazio (branco), o usuário digita a data e caso ele apague tudo do campo, ele nao consegue sair do campo, pois o mesmo fica lançando a mensagem de data invalida mesmo com o campo vazio (branco).
Obrigado pela atenção e aguardo comentário.
Como ele falou: ´... e logo em seguida quero limpar/apagar o mesmo,...´
Sem o Clear ele não consegue limpar o campo, seja qual for a mascara utilizada
consegui ... cds.fieldByName(´Campo´).asstring:=´´;
Mas para um controle completo do campo, basta acrescentar o codigo abaixo ao evento OnSetText da variável correspondente à data:
OnSetText ... Claro ... E eu falando OnGetText . Não posso editar
http://forum.devmedia.com.br/viewtopic.php?t=94492&highlight=onsettex¬2A[/quote:9249da802e]
Olá Marco,
O problema é edição do campo. O campo tá vazio (branco), o usuário digita a data e caso ele apague tudo do campo, ele nao consegue sair do campo, pois o mesmo fica lançando a mensagem de data invalida mesmo com o campo vazio (branco).
Obrigado pela atenção e aguardo comentário.
GOSTEI 0
Aprendiz_ce
21/08/2008
Como ele falou: ´... e logo em seguida quero limpar/apagar o mesmo,...´
Sem o Clear ele não consegue limpar o campo, seja qual for a mascara utilizada.
Mas para um controle completo do campo, basta acrescentar o codigo abaixo ao evento OnSetText da variável correspondente à data:
try
if Trim(Text)=´/ /´ then Sender.Clear
else Sender.AsString:=Text;
except
on e:econverterror do
begin
ShowMessage(´Data inválida!´);
Abort;
end;
end;
É a mesma rotina que utilizo e nunca falhou.
Olá Catunda,
Nesse exemplo terei que colocar esse procedimento em cada campo data, é isso? Não tem como fazer isso de um forma GLOBAL para toda a aplicação?
Obrigado e aguardo e qualquer comentário.
GOSTEI 0