CAMPO TYPE TIMESTAMP NO DB FIREBIRD
Crie a tabela abaixo.
CREATE TABLE TESTE (
DATA TIMESTAMP);
Realize um teste.
insert into teste(data) values ([ô]11/20/2015 13:25:00[ô]);
insert into teste(data) values ([ô]11/20/2015[ô]);
insert into teste(data) values ([ô]20/11/2015[ô]); --Irá retornar erro pois o formato está incorreto.
Verifique que o formato da data está no padrão Mês/Dia/Ano, firebird funciona assim.
Sql = Sql & [Ô] [ô][Ô] & IIf(txtClDtNascimento.Text = [Ô][Ô], [txt-color=#e80000]null[/txt-color], [Ô][ô][Ô] & Format(txtClDtNascimento.Text, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô][Ô]) & [Ô][ô],[Ô]
Citação::
retire as aspas da string [Ô]Null[Ô], daà vai ficar assim:
[c]Sql = Sql & [Ô] [ô][Ô] & IIf(txtClDtNascimento.Text = [Ô][Ô], [txt-color=#e80000]null[/txt-color], [Ô][ô][Ô] & Format(txtClDtNascimento.Text, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô][Ô]) & [Ô][ô],[Ô]
[/c]JABA, acho que você matou a charada. Porém, ele está utilizando aspas em mais de um lugar.
Sql = Sql & [Ô] [Ô] & IIf(txtClDtNascimento.Text = [Ô][Ô], null, [Ô][ô][Ô] & Format(txtClDtNascimento.Text, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô][Ô]) & [Ô],[Ô]
Sql = Sql & [Ô] [Ô] & IIf(txtClDtNascimento.Text = [Ô][Ô], null, [Ô][ô][Ô] & Format(txtClDtNascimento.Text, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô][Ô]) & [Ô],[Ô]
issa aqui grava normal...
insert into teste(data) values ([ô]11/20/2015 13:25:00[ô]);
insert into teste(data) values ([ô]11/20/2015[ô]);
tando com date como TIMESTAMP
Qual dos valores estão sendo lançados no banco no teste que fez? null ou Format(txtClDtNascimento.Text, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô][Ô])?
Citação:
issa aqui grava normal...
insert into teste(data) values ([ô]11/20/2015 13:25:00[ô]);
insert into teste(data) values ([ô]11/20/2015[ô]);
Inverta a formatação então:
Sql = Sql & [Ô] [Ô] & IIf(txtClDtNascimento.Text = [Ô][Ô], null, [Ô][ô][Ô] & Format(txtClDtNascimento.Text, [txt-color=#e80000][Ô]mm/dd/yyyy[Ô][/txt-color]) & [Ô][ô][Ô])
Citação::
GUIMORAES, não sei se você conseguiu reparar, mas isso é um IF Ternário. Ou seja, se txtClDtNascimento.Text = [Ô][Ô], então ele vai colocar null, caso contrário, ele vai colocar Format(txtClDtNascimento.Text, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô][Ô]). O único lugar que as aspas estavam erradas era em [Ô]NULL[Ô], pois ele estaria salvando isso como string no banco, sendo que é um campo de data. Acredito que essa sequência de aspas ficou assim porque ele retirou apenas a parte que interessava na sql original.
Sim, reparei que é uma operação Ternária, porém a mesma irá retornar o que está dentro do IF, ou seja, o insert irá ficar com duas aspas simples naquela situação, mesmo sendo null, o que não é necessário. (Ex: insert into tabela(data) values (null) e não insert into tabela(data) values ([ô]null[ô]))
Citação::
também. não..!!!Sql = Sql & [Ô] [Ô] & IIf(txtClDtNascimento.Text = [Ô][Ô], null, [Ô][ô][Ô] & Format(txtClDtNascimento.Text, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô][Ô]) & [Ô],[Ô]
issa aqui grava normal...insert into teste(data) values ([ô]11/20/2015 13:25:00[ô]);
insert into teste(data) values ([ô]11/20/2015[ô]);
tando com date como TIMESTAMP
MOREIRA,
Veja bem, a formatação da data no seu insert está incorreta, utilize da forma que te passei que irá funcionar.
Debug sua aplicação, e passe o resultado do SQL antes de enviar para o banco de dados, assim entenderemos melhor como está sendo enviado.
Ex: (Insert into tabela(campo1, campo2, campo3) values([ô]teste[ô],[ô]teste[ô]) ou (Insert into tabela(campo1, campo2) values([ô]teste[ô],[ô]teste[ô], [ô]teste[ô])