Erro com datas (DBExpress/Firebird/D7)

21/08/2008

1

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.


Responder

Posts

21/08/2008

Marco Salles

hummmm...

erro clássico .... Vc deve ter alguma mascara no field .

tem que programar o evento ongettext


Responder

24/08/2008

Catunda

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.


Responder

24/08/2008

Marco Salles

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.


Responder

24/08/2008

Catunda

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.


Responder

24/08/2008

Marco Salles

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


Responder

26/01/2009

Aprendiz_ce

[quote:9249da802e=´Marco Salles´]
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.


Responder

26/01/2009

Aprendiz_ce

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.


Responder