segunda-feira, 28 de janeiro de 2013

Gravar data zerada Delphi X SQL Server (componente dateEdit)


boa tarde a todos,
tive um problema com campo data ( pra variar ) usando um dateEdit, que no meu caso é da DevExpress, no delphi e SQL Server, tive que fazer um pequeno ajuste de emergência , do qual não me orgulho muito, mas até o momento tem me servido, e como não achei nada melhor pra substituir, vou mostrar aqui e espero que ajude alguém.
em uma determinada situação estava precisando gravar um campo do tipo data zerado no banco de dados, mas o valor que vem do dateEdit não preenchido não é aceito no delphi e nem no SQL, ou da algum erro de data invalida ou grava a primeira data valida existente 30/12/1899, então fiz o seguinte procedimento.

o componente sem preencher grava no meu objeto o valor  00/00/0000, então pensei em verificar :

if obj.data = 00/00/0000 then qry.data := null else qry.data := obj.data;

ou seja, se o campo data do meu objeto for 00/00/0000, passo para a qry o valor null, assim não gravo na data daquele registro, se não, eu gravo o valor preenchido.
mas para a minha surpresa o delphi da um erro de ponto flutuante e não funciona, então fiz a seguinte alteração

if datetostr(obj.data) = '00/00/0000' then qry.data := null else qry.data := obj.data;

e assim funcionou certinho, pois se faço a comparação sem a conversão de data para texto, o delphi tb da um erro falando que não posso comparar um objeto data com uma string, então essa foi a maneira que encontrei.
se vc usa algum componente que retorna essa mesma informação, esse metodo pode te ajudar, se sua duvida for só como gravar a data zerada no banco, passe no sql do insert o valor null.
espero ter ajudado alguem
até a proxima, e não esqueçam de dar uma clicadinha em algum anuncio..rsrs



Nenhum comentário:

Postar um comentário