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

Eduardo Bahiense eduardo em icontroller.com.br
Sex Set 10 19:12:42 -03 2010


Disponha sempre

Em 10/09/2010 16:51, Thiago escreveu:
> 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
>>
>
>
>
> ______________________________________________
> 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