CAMPO DATAS NO FIREBIRD 1.5
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.
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
Curtidas 0
Respostas
Cb
18/08/2009
Olá
No Exit do DBEdit tente:
Sacou?
No Exit do DBEdit tente:
try StrToDate(DBEdit3.Text); except MessageDlg(´Data invalida! Tente novamente.´,mtError,[mbok],0); DBEData.SetFocus;
Sacou?
GOSTEI 0
Cb
18/08/2009
Corrigindo:
No OnExit.
No OnExit.
GOSTEI 0
Ant.neto
18/08/2009
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.
Obrigado pela a dica mas nesse caso n funcionou, mas vou aproveitar essa dica em outros casos
Valeu.
Olá
No Exit do DBEdit tente:
Sacou?
try StrToDate(DBEdit3.Text); except MessageDlg(´Data invalida! Tente novamente.´,mtError,[mbok],0); DBEData.SetFocus;
GOSTEI 0
Cb
18/08/2009
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.
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.
GOSTEI 0
Marco Salles
18/08/2009
talves Resolva :
Mascara do Tfield
!99/99/9999;1;_
Evento OnSetText do Tfield
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;
GOSTEI 0
Ant.neto
18/08/2009
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
[/quote:6b17e7785b]
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;
GOSTEI 0
Cb
18/08/2009
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.
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.
GOSTEI 0
Cb
18/08/2009
Retorna: 1/06//974
GOSTEI 0
Cb
18/08/2009
Pior tenta ai:
01/01/1974
Retorna: /1///174
:lol:
01/01/1974
Retorna: /1///174
:lol:
GOSTEI 0
Marco Salles
18/08/2009
Com certeza vc esta fazendo algo errado ou deixando de fazer algo certo
possivel causa > configuração regional , diferente do contexto
[b:27470f0f60]dd/MM/aaaa[/b:27470f0f60]
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]
GOSTEI 0
Cb
18/08/2009
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.
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.
GOSTEI 0
Cb
18/08/2009
Esqueci de agradecer ao pessoal a ajuda. Muito Obrigado. :D
GOSTEI 0
Marco Salles
18/08/2009
Penso que o tópico descambou em um caminho que ficou meio confuso.
O Post inicial era :
Nesta situação CB a saida é utilizar o evento OnSetText e alterar a Mascara
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.
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.
GOSTEI 0
Joaoshi
18/08/2009
Pode ser que não ajude em nada, mas...
ou
DD/MM/AAAA
ou
DD/MM/YYYY
GOSTEI 0
Cb
18/08/2009
[quote:9e4426ba7f=´Marco Salles´]Penso que o tópico descambou em um caminho que ficou meio confuso.
O Post inicial era :
Nesta situação CB a saida é utilizar o evento OnSetText e alterar a Mascara
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:
Como eu disse, peguei outro componente e não dá erro algum.
:P
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:
Como eu disse, peguei outro componente e não dá erro algum.
:P
GOSTEI 0
Marco Salles
18/08/2009
Uma Imagem vale mais do que mil palavras
Percebi na sua imagem que não tem a mascara
Ao se digitar uma data (INCOMPLETA) em um componente que reflete uma mascara por exemplo no seu caso [b:c28ae47bed]10/6/1974[/b:c28ae47bed] , certamente a sua imagem
Deveria ficar assim
[b:c28ae47bed]10/_6/1974[/b:c28ae47bed] .... Aonde o TRAÇO ´_´ Refleta a presença da Mascara
Sua Imagem [b:c28ae47bed]10/6/1974[/b:c28ae47bed]
TField com Mascara : [b:c28ae47bed]10/_6/1974[/b:c28ae47bed]
Abração
Percebi na sua imagem que não tem a mascara
Ao se digitar uma data (INCOMPLETA) em um componente que reflete uma mascara por exemplo no seu caso [b:c28ae47bed]10/6/1974[/b:c28ae47bed] , certamente a sua imagem
Deveria ficar assim
[b:c28ae47bed]10/_6/1974[/b:c28ae47bed] .... Aonde o TRAÇO ´_´ Refleta a presença da Mascara
Sua Imagem [b:c28ae47bed]10/6/1974[/b:c28ae47bed]
TField com Mascara : [b:c28ae47bed]10/_6/1974[/b:c28ae47bed]
Abração
GOSTEI 0
Cb
18/08/2009
Isto é um DBEdit usando a mascara no DataSet. Quando eu digito o zero a esquerda ele corta.
Eu digito 10/06/1974, não só este numero. Qualquer que tenha zero a esquerda ele corta e dá o erro. Se digitar 01/01/2000 por exemplo. ele come os zeros e multiplica as /.
Estou fazendo algo errado?
Mascara do Dataset:
Valeu!
Eu digito 10/06/1974, não só este numero. Qualquer que tenha zero a esquerda ele corta e dá o erro. Se digitar 01/01/2000 por exemplo. ele come os zeros e multiplica as /.
Estou fazendo algo errado?
Mascara do Dataset:
!99/99/0000;1;_
Valeu!
GOSTEI 0
Marco Salles
18/08/2009
Amigo , estou achando interressante sua situação e gostaria de aprender
com ela ... Teria como montar um exemplo simples , do modo que esta fazendo
e enviar para o email para que pudesse simular o que esta acontecendo com
vc
Não consigo simular este erro de jeito nenhum aqui no meu PC
com ela ... Teria como montar um exemplo simples , do modo que esta fazendo
e enviar para o email para que pudesse simular o que esta acontecendo com
vc
Não consigo simular este erro de jeito nenhum aqui no meu PC
GOSTEI 0
Cb
18/08/2009
Certo. Acredito seguir o padrão.
Utilizando Delphi 7 + Firebird 2.1 + MDO.
Tenho o Dataset configurado para dar select * numa tabela usuario (por exempo)
Coloco um DBEdit no form ´apontando´ para o campo data do dataset.
Tá lá o erro citado, nem precisa fazer transação. Basta pegar o .text digitado e exibir tá lá tudo bagunçado.
:P
Eu digito com o 0 a esquerda, o DBedit que remove.
Como eu disse anteriormente outros componentes que não o DBEdit não acontece o problema. Por ex um MaskEdit não dá o erro.
Intrigante, não?
Eu suspeito de algum problema com o firebird, pois no passado já utilizei com Mysql server e não lembro de nenhum erro do tipo.
Utilizando Delphi 7 + Firebird 2.1 + MDO.
Tenho o Dataset configurado para dar select * numa tabela usuario (por exempo)
Coloco um DBEdit no form ´apontando´ para o campo data do dataset.
Tá lá o erro citado, nem precisa fazer transação. Basta pegar o .text digitado e exibir tá lá tudo bagunçado.
:P
Eu digito com o 0 a esquerda, o DBedit que remove.
Como eu disse anteriormente outros componentes que não o DBEdit não acontece o problema. Por ex um MaskEdit não dá o erro.
Intrigante, não?
Eu suspeito de algum problema com o firebird, pois no passado já utilizei com Mysql server e não lembro de nenhum erro do tipo.
GOSTEI 0
Marco Salles
18/08/2009
Intrigante
faça um teste
Digiteno even to OnClick de Um Botão
ou
O que aparece ni DbEdit ?????
faça um teste
Digiteno even to OnClick de Um Botão
SeuDataSet.Append; SeuDataSet.FieldByNama(´SeuCampoData´).asString:=´10/06/1974´;
ou
SeuDataSet.Append; SeuDataSet.FieldByNama(´SeuCampoData´).asDataTime:=StrtTodate(´10/06/1974´);
O que aparece ni DbEdit ?????
GOSTEI 0
Cb
18/08/2009
O mesmo bug:
´1/06//974´
Engraçado que como eu disse já fiz muitos sistemas em delphi nunca deu isto. O que tem de novo é o MDO e o Firebird. :P
Abração.
´1/06//974´
Engraçado que como eu disse já fiz muitos sistemas em delphi nunca deu isto. O que tem de novo é o MDO e o Firebird. :P
Abração.
GOSTEI 0
Marco Salles
18/08/2009
Hummmmmm... Ja era de se esperar
[b:d0c2698756]Não acredito que seje do Firebird.[/b:d0c2698756]
Acredito que seje desta tecnologia MDO ????
Eu particularmente desconheço ( Uso e so Uso DbExpress com clientDataSet ,
foi amor a primeira Vista)
Eu qnd começei com Delphi em 2005 Tinha muitas dúvidas e dificuldade ,
inclusive uma dúvida parecida com a sua
Na época usava Paradox e tive um Problema parecido
Esta dúvida pode ser vista em ;
http://forum.devmedia.com.br/viewtopic.php?t=54693&highlight=editmask
Como vc esta passando por um problema parecido , eu resolvi abrir este
projeto usando Paradox para reproduzir o erro (pq hj minha capacidade de
soluciona-lo é mais consistente do que naquela época ) Aonde foi aplicado
uma solução que hj eu não varia
Mas infelismente , não consegui reproduzir o erro ... Na época usava
Delphi5 com WindowsXp , hj uso Delphi2007 com Windows Vista
Resta ainda um outro computador que tem o delphi5 e o Windows Xp Instalado
Nele ainda tem requisos deste projeto citado no post que lhe passei
Vou a tarde abrir o Projeto nele e forçar o Erro ( Usando a mascara citada)
Torço para que dê erro, mas to duvidando , parece que assombração sabe para
quem aparece . Na época fiquei doido e a gente perde um tempo com isto.
coça a cabeça daqui , coça a cabeça dali e da tudo errado
[b:d0c2698756]Não acredito que seje do Firebird.[/b:d0c2698756]
Acredito que seje desta tecnologia MDO ????
Eu particularmente desconheço ( Uso e so Uso DbExpress com clientDataSet ,
foi amor a primeira Vista)
Eu qnd começei com Delphi em 2005 Tinha muitas dúvidas e dificuldade ,
inclusive uma dúvida parecida com a sua
Na época usava Paradox e tive um Problema parecido
Esta dúvida pode ser vista em ;
http://forum.devmedia.com.br/viewtopic.php?t=54693&highlight=editmask
Como vc esta passando por um problema parecido , eu resolvi abrir este
projeto usando Paradox para reproduzir o erro (pq hj minha capacidade de
soluciona-lo é mais consistente do que naquela época ) Aonde foi aplicado
uma solução que hj eu não varia
Mas infelismente , não consegui reproduzir o erro ... Na época usava
Delphi5 com WindowsXp , hj uso Delphi2007 com Windows Vista
Resta ainda um outro computador que tem o delphi5 e o Windows Xp Instalado
Nele ainda tem requisos deste projeto citado no post que lhe passei
Vou a tarde abrir o Projeto nele e forçar o Erro ( Usando a mascara citada)
Torço para que dê erro, mas to duvidando , parece que assombração sabe para
quem aparece . Na época fiquei doido e a gente perde um tempo com isto.
coça a cabeça daqui , coça a cabeça dali e da tudo errado
GOSTEI 0
Cb
18/08/2009
Olá!
MDO: http://www.mdolib.com/
Então, eu já usei DbExpress e até ADO. kekekeke.
Nunca tive isto tambem, estou sem outro SGBD aqui no meu PC para poder testar tambem.
Como eu já devo ter dito, uso delphi a muitos anos. Nunca tive deste problema tambem. Se tive passou batido, mas eu costumo testar MUITO meus sistemas. Duvido que tenha ido algo tão primário.
Como eu disse usando outro componente pra data vai tranquilo, sem erros. Vou tentar mais pra saber o porquê.
Vou tentar ver se aproveito algo do seu topico passado. Retorno se não hoje amanhã.
Abraços. :D
MDO: http://www.mdolib.com/
Então, eu já usei DbExpress e até ADO. kekekeke.
Nunca tive isto tambem, estou sem outro SGBD aqui no meu PC para poder testar tambem.
Como eu já devo ter dito, uso delphi a muitos anos. Nunca tive deste problema tambem. Se tive passou batido, mas eu costumo testar MUITO meus sistemas. Duvido que tenha ido algo tão primário.
Como eu disse usando outro componente pra data vai tranquilo, sem erros. Vou tentar mais pra saber o porquê.
Vou tentar ver se aproveito algo do seu topico passado. Retorno se não hoje amanhã.
Abraços. :D
GOSTEI 0
Cb
18/08/2009
Droga, esqueci de falar o forum está sem edit.
Com o MaskEdit tá certinho! kekekekeke!!
Com o MaskEdit tá certinho! kekekekeke!!
GOSTEI 0
Cb
18/08/2009
HARURAHRAURAHU! Resolveu. :lol:
Engraçado que se eu peço para ele dar um showmessage(DBEdit.text) o erro tá lá ainda.
O mais interessante ainda é que o RX DBEdit não dá o erro.
Eu antes coloquei o codigo que voce digitou, mas não mandava gravar pois marquei para trace o codigo no settext que voce me passou. Dai ele entrava lá tudo normal. E o showmessage dava o erro.
Desta vez resolvi mandar pro DB e vi que corrigiu o erro.
Não deixa de ser cabuloso e eu fico preocupado em saber se isto passou no passado.
:shock:
Engraçado que se eu peço para ele dar um showmessage(DBEdit.text) o erro tá lá ainda.
O mais interessante ainda é que o RX DBEdit não dá o erro.
Eu antes coloquei o codigo que voce digitou, mas não mandava gravar pois marquei para trace o codigo no settext que voce me passou. Dai ele entrava lá tudo normal. E o showmessage dava o erro.
Desta vez resolvi mandar pro DB e vi que corrigiu o erro.
Não deixa de ser cabuloso e eu fico preocupado em saber se isto passou no passado.
:shock:
GOSTEI 0