Fórum CAMPO DATAS NO FIREBIRD 1.5 #373722

18/08/2009

0

amigos, boa noite, estou migrando um pequenos sistema que tinha como base de dados Interbase para o Firebord 1.5, porém me deparei com um erro que gostaria de dicas para resolver, seguinte:

utilizo um Dbedit para entrar com a data em um campo Date do Fire, no campo utilizo uma máscara no Tfilde (!99/99/0000;1;_) porem com máscara ou sem mascara se digito uma data no campo e imediatamente apago essa data (deixo em branco) quando retiro o foco do campo é apresentado esse erro: ´Invalid input value´, ou apresenta ´ / / is not a valid date.

qual a melhor solução para arrumar isso?

Obrigago.


Ant.neto

Ant.neto

Responder

Posts

19/08/2009

Cb

Olá

No Exit do DBEdit tente:

try
StrToDate(DBEdit3.Text);
except
    MessageDlg(´Data invalida! Tente novamente.´,mtError,[mbok],0);
    DBEData.SetFocus;


Sacou?


Responder

Gostei + 0

19/08/2009

Cb

Corrigindo:

No OnExit.


Responder

Gostei + 0

19/08/2009

Ant.neto

Ola CB, obrigado pela a ajuda, mas não deu certo, alem do mesmos erros, agora todas as datas não estão maos aceitando. da erro em todas.

Obrigado pela a dica mas nesse caso n funcionou, mas vou aproveitar essa dica em outros casos

Valeu.

Olá No Exit do DBEdit tente:
try
StrToDate(DBEdit3.Text);
except
    MessageDlg(´Data invalida! Tente novamente.´,mtError,[mbok],0);
    DBEData.SetFocus;
Sacou?



Responder

Gostei + 0

19/08/2009

Cb

Eita realmente tem um bug ali no DBedit como DATA.

Uma data por ex: 10/02/1999 ele come o 0 do 02 e ferra tudo no StrToDate.

Mas da pra contornar usando um Maskedit.


Responder

Gostei + 0

19/08/2009

Marco Salles

talves Resolva :

Mascara do Tfield

!99/99/9999;1;_

Evento OnSetText do Tfield

procedure TForm1.SEUDataSetSEUCAMPOSetText(Sender: TField; const Text: string);
begin
if text=´  /  /    ´ then
 sender.Clear
else
 sender.AsString:=text;
end;



Responder

Gostei + 0

19/08/2009

Ant.neto

Grande Marco, valeu pela ajuda... deu certo, eu até tentei antes fazer +/- do jeito da sua dica, mas o bestão aqui não pensou no ´else
sender.AsString:=text;´ rs.

Brigadão.


[quote:6b17e7785b=´Marco Salles´]talves Resolva :

Mascara do Tfield

!99/99/9999;1;_

Evento OnSetText do Tfield

procedure TForm1.SEUDataSetSEUCAMPOSetText(Sender: TField; const Text: string);
begin
if text=´  /  /    ´ then
 sender.Clear
else
 sender.AsString:=text;
end;
[/quote:6b17e7785b]


Responder

Gostei + 0

23/08/2009

Cb

Ao menos comigo aqui continua o DBEdit passando a data num formato errado.

Digita ai 10/06/1974 e pega o valor pelo

showmessage(DBEdit1.text);

Vem algo assim 10/61/974

Só resolvi passando para o DataEdit do RX conponents.


Responder

Gostei + 0

23/08/2009

Cb

Retorna: 1/06//974


Responder

Gostei + 0

23/08/2009

Cb

Pior tenta ai:

01/01/1974

Retorna: /1///174

:lol:


Responder

Gostei + 0

25/08/2009

Marco Salles

Com certeza vc esta fazendo algo errado ou deixando de fazer algo certo

Ao menos comigo aqui continua o DBEdit passando a data num formato errado. Digita ai 10/06/1974 e pega o valor pelo showmessage(DBEdit1.text); Vem algo assim 10/61/974


possivel causa > configuração regional , diferente do contexto

[b:27470f0f60]dd/MM/aaaa[/b:27470f0f60]


Responder

Gostei + 0

27/08/2009

Cb

Olá.

Não é isto. Eu estou DD/MM/AAAA.

A resolução foi pegar o RXComponents e usar o Edit de data dele.

Ou então colocar um Maskedit jogando o valor no DBEdit.


Responder

Gostei + 0

27/08/2009

Cb

Esqueci de agradecer ao pessoal a ajuda. Muito Obrigado. :D


Responder

Gostei + 0

27/08/2009

Marco Salles

Penso que o tópico descambou em um caminho que ficou meio confuso.

O Post inicial era :

utilizo um Dbedit para entrar com a data em um campo Date do Fire, no campo utilizo uma [b:9e4426ba7f]máscara no Tfilde[/b:9e4426ba7f] (!99/99/0000;1;_) porem com máscara ou sem mascara se digito uma data no campo e imediatamente apago essa data (deixo em branco) quando retiro o foco do campo é apresentado esse erro: ´Invalid input value´, ou apresenta ´ / / is not a valid date.


Nesta situação CB a saida é utilizar o evento OnSetText e alterar a Mascara

Mascara do Tfield 
!99/99/9999;1;_ 

Evento OnSetText do Tfield 
Código: 
procedure TForm1.SEUDataSetSEUCAMPOSetText(Sender: TField; const Text: string); 
begin 
if text=´  /  /    ´ then //Utilizando formato Regionais dd/MM/aaaa
 sender.Clear 
else 
 sender.AsString:=text; 
end; 


Agora , nestas condiçoes (Mascara no TFIELD DO CAMPO ) , se não funcionar
para vc estou SURPRESO... Acabei de Refazer este teste Num Campo Data
e utilizei estritamente as Recomendações acima e Não tive nenhun Problema.


Responder

Gostei + 0

27/08/2009

Joaoshi

Pode ser que não ajude em nada, mas...

DD/MM/AAAA

ou

DD/MM/YYYY



Responder

Gostei + 0

27/08/2009

Cb

[quote:9e4426ba7f=´Marco Salles´]Penso que o tópico descambou em um caminho que ficou meio confuso.

O Post inicial era :

utilizo um Dbedit para entrar com a data em um campo Date do Fire, no campo utilizo uma [b:9e4426ba7f]máscara no Tfilde[/b:9e4426ba7f] (!99/99/0000;1;_) porem com máscara ou sem mascara se digito uma data no campo e imediatamente apago essa data (deixo em branco) quando retiro o foco do campo é apresentado esse erro: ´Invalid input value´, ou apresenta ´ / / is not a valid date.


Nesta situação CB a saida é utilizar o evento OnSetText e alterar a Mascara

Mascara do Tfield 
!99/99/9999;1;_ 

Evento OnSetText do Tfield 
Código: 
procedure TForm1.SEUDataSetSEUCAMPOSetText(Sender: TField; const Text: string); 
begin 
if text=´  /  /    ´ then //Utilizando formato Regionais dd/MM/aaaa
 sender.Clear 
else 
 sender.AsString:=text; 
end; 


Agora , nestas condiçoes (Mascara no TFIELD DO CAMPO ) , se não funcionar
para vc estou SURPRESO... Acabei de Refazer este teste Num Campo Data
e utilizei estritamente as Recomendações acima e Não tive nenhun Problema.[/quote:9e4426ba7f]

Eu tambem. Uso delphi desde a versão 3, parei em 2005 e voltei agora. Mas a anos não usava banco de dados junto.

Será que todos meus softs anteriores foram com este problema? :P

Tente digitar a data: 10/06/1974 e pegar o valor num botão por showmessage.

Delphi 7.

Mascara: !99/99/0000;1;_

Pra não ficar como delirio meu: :lol: :lol:

[img:9e4426ba7f]http://cb.freeshell.org/Extra/Doidera.gif[/img:9e4426ba7f]

Como eu disse, peguei outro componente e não dá erro algum.

:P


Responder

Gostei + 0

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

Aceitar