[firebase-br] Campo com default source grava valor null

Thiago zan_ti em farmaponte.com.br
Sex Set 10 16:51:05 -03 2010


Eduardo, boa tarde.

Depois de um pouco pesquisar resolvi o problema utilizando ClientDataSet 
mas ligado em DBExpress.

O IBX que é meio bugado, pelo menos na versão que eu estou.

Obrigado pelas dicas.

Abraços.

Em 07/09/2010 13:05, Eduardo Bahiense escreveu:
> O problema de passar pelo dataset é que você ficará vulnerável à horas
> configuradas erradas na máquina cliente, e se o sujeito quiser simular
> que fez ontem, bastará trocar a hora do seu computador. Se for passar
> pelo dataset, veja se consegue passar "CURRENT_TIMESTAMP" ao ínvés da
> variável "NOW" do Delphi.
>
> Eduardo
>
> Em 06/09/2010 08:11, Thiago escreveu:
>> Eduardo, bom dia.
>>
>> Muito obrigado pela explicação, eu realmente não que o default source
>> era acionado apenas se não passasse valor.
>>
>> Pelas suas opções acho que vou acabar passando pelo dataset mesmo pois
>> fica mais claro.
>>
>> Obrigado.
>>
>> Em 03/09/2010 19:30, Eduardo Bahiense escreveu:
>>> Oi Thiago
>>>
>>> O problema é que o campo está declarado no dataset, e quando você não
>>> passa valor, o dataset está mandando como NULL. O defaultsource só é
>>> acionado quando vc não passa o campo no INSERT, se você o passa no
>>> insert expicitamente como NULL, o BD acata. Por exemplo:
>>> INSERT INTO TABELA (A,B,C) VALUES(1,2,NULL)
>>> INSERT INTO TABELA (A,B) VALUES (1,2) -> C usuará defaultsource
>>>
>>> Para resover essa questão vc tem 3 opções (em ordem de preferência)
>>>
>>> 1. Retire o campo do dataset ou veja se há uma maneira de configurá-lo
>>> como não ativo para inserts e updates
>>> 2. Coloque uma trigger na tabela com algo como:
>>> "new.dth_insert=coalesce(new.dth_insert, current_timestamp)"
>>> 3. Passe "now" no valor do campo pelo dataset
>>>
>>> Eduardo
>>>
>>>
>>> Em 03/09/2010 13:29, Thiago escreveu:
>>>> Galera, bom dia.
>>>>
>>>> Seguinte, tenho uma tabela no firebird onde tenho um campo chamado
>>>> dth_insert com o default source como current_timestamp.
>>>>
>>>> Quando insiro um registro através de insert into via comando SQL o
>>>> registro depois de gravado fica com a data e hora gravada no campo
>>>> corretamente mas quando eu faço isso utilizando append e post no
>>>> dataset
>>>> no delphi esse campo fica gravado null na tabela.
>>>>
>>>> Eu nunca trabalhei utilizando gravação de dados diretamente pelo
>>>> dataset, sempre fiz isso utilizando comandos SQL mesmo, por isso não
>>>> sei
>>>> o que devo configurar para que isso aconteça.
>>>>
>>>> E outra coisa, esse é um campo not null, mas como ele tem valor default
>>>> eu não preciso passar nada de valor porque o banco vai fazer o
>>>> preenchimento sozinho mas como pelo delphi está gravando null está
>>>> dando
>>>> exceção.
>>>>
>>>> Alguém poderia me ajudar?
>>>>
>>>> Obrigado.
>>>>
>>>>
>>>> ______________________________________________
>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>
>>>
>>>
>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>






Mais detalhes sobre a lista de discussão lista