Fórum DBExpress X Data nula outra vez #194160

11/11/2003

0

Oi pessoal, já fiz esta pergunta uma vez, e até agora ninguém me deu uma solução.., será que ninguém nunca passou por isso ?, e se passou como resolveu.
Uso Delphi 7 X DBExpress X Firebird 1.5RC6

O Problema:
Tenho um form ligado a um Datamodule, todos os componentes são TDBEdits, um dos fields é timestamp, ou seja, desejo gravar uma data, quando o usuário digita uma data valida OK, grava certinho, o problema é quando resolve apagar esta data.
A data foi gravada por exemplo como: 20/10/2003 por algum motivo o usuário quer apagar esta data que não é campo obrigatório, como faço para voltar para null. Não utilizo Insert, Update direto no banco, pois quando faço através destes comandos tudo bem, mas não posso perder este form, e trocar tudo por edit / maskedit, não acredito que não possa ter uma forma mais eficaz ::)))

1) Quando ele deleta a data existente no TDBedit e pressiona enter ou tab ou clica para sair do campo, aparece a seguinte mensagem
SqlTimestamp could not valid.

Já tentei tratar no evento Exit, Change, no datamodule no ONGettext, ONSetText mas nada feito. Após o Applyupdates(0) - Aparece um erro de Acess violation, se vc tenta gravar data nula.
Alguém tem alguma dica.

Muito obrigado

César


Cesarpir

Cesarpir

Responder

Posts

11/11/2003

Edgar Olavo

Olá

Fiz uma simulação aqui e não deu esse erro, tudo funcionou.

Se você puder mandar o código e o banco de dados ajudaria muito a resolver seu problema.

até


Responder

Gostei + 0

11/11/2003

Fred

Experimente pressionar ESC e depois tente sair do campo!! 8)


Responder

Gostei + 0

11/11/2003

Markk

O erro aparece quando você testa o aplicativo dentro do Delphi? Já tentou verificar se rodando o aplicativo direto se ocorre o mesmo erro?

Se não, anule a data com:
StrToDate(´´);


Responder

Gostei + 0

29/10/2005

Lorde_morte.

Séra que alguem já solucionou este problema?


Responder

Gostei + 0

30/10/2005

Cesarpir

Amigo Lorde_morte, até hoje estou com este problema é mole, mas se ajudar vc recentemente comecei a trabalhar em uma empresa que utiliza
os componentes do elivado, ele tem um componente chamado TEvDBDateEdit que com resolve o problema, posso pressionar delete, e gravar que ele grava data nula no banco, existindo uma data registrada antes ou não, porém não é free.
Sem querer fazer propaganda, mas por enquanto é a única forma que vi, deve existir outros free.
Só para comentar este problema estava usando firebird 1.5, nesta empresa que estou desenvolvendo usando os componentes do elivado utilizo o Mysql40.
Bom espero que te ajude ou pelo menos uma luz, caso ache uma solução favor avise-me, obrigado.

Abraços

César


Responder

Gostei + 0

30/10/2005

Cesarpir

Desculpe esqueci de dizer mas só da este problema quando no field do campo data eu coloco a mascar 99/99/9999;1

Ai da erro, mas sem ela blz, o problema é que o usuário tem que digitar as barras.

Valeu

César


Responder

Gostei + 0

03/11/2005

Lorde_morte.

Ai da erro, mas sem ela blz, o problema é que o usuário tem que digitar as barras.

Mas nao é nada profissional deixar um campo data sem qualquer mascara.


Ninguem sabe como solucionar esse problema?

Me ajudem!!


Responder

Gostei + 0

03/11/2005

Olavojr

Sua resposta em:

http://forum.clubedelphi.net/viewtopic.php?t=69016


Responder

Gostei + 0

26/11/2006

Brasidata

Anos depois venho dar uma dica simples para resolver definitivamente a questão do amigo cesarpir (mesmo que ele já o tenha resolvido), e espero que sirva pra quem mais estiver passando por este problema.
O código abaixo deverá ser colocado no evento OnChange do DBedit que estiver com esse problema. Como o código usa TypeCast, não importa o nome do componente, do campo ou BD.

if ((SENDER as TDBEdit).DataSource.DataSet.State in [dsInsert,dsEdit]) AND ((SENDER as TDBEdit).Text = ´ / / ´) then
(SENDER as TDBEdit).Field.Clear;

Abraços a todos.

MARCO DELL ISOLA
BRASIDATA :D


Responder

Gostei + 0

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

Aceitar