CAMPO TYPE TIMESTAMP NO DB FIREBIRD

GUIMORAES 20/11/2015 13:28:22
#454231
Só para matar a curiosidade.

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.
JABA 20/11/2015 13:51:44
#454234
retire as aspas da string [Ô]Null[Ô], daí vai ficar assim:

Sql = Sql & [Ô]     [ô][Ô] & IIf(txtClDtNascimento.Text = [Ô][Ô], [txt-color=#e80000]null[/txt-color], [Ô][ô][Ô] & Format(txtClDtNascimento.Text, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô][Ô]) & [Ô][ô],[Ô]
GUIMORAES 20/11/2015 14:02:18
#454235
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[Ô]) & [Ô][ô][Ô]) & [Ô],[Ô]
JABA 20/11/2015 14:09:35
#454238
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.
MOREIRA 20/11/2015 14:14:55
#454239
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
JABA 20/11/2015 14:20:45
#454240
Por que a vírgula no final? Isso só faz sentido se tiver uma outra parte da consulta que você ocultou.

Qual dos valores estão sendo lançados no banco no teste que fez? null ou Format(txtClDtNascimento.Text, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô][Ô])?
JABA 20/11/2015 14:22:53
#454241
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]) & [Ô][ô][Ô])

GUIMORAES 20/11/2015 14:43:57
#454245
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.
MOREIRA 20/11/2015 14:46:38
#454246
continua mesmo com esse; Sql = Sql & [Ô] [Ô] & IIf(txtClDtNascimento.Text = [Ô][Ô], Null, [Ô][ô][Ô] & Format(txtClDtNascimento.Text, [Ô]mm/dd/yyyy[Ô]) & [Ô][ô][Ô])



GUIMORAES 20/11/2015 14:50:18
#454248
A quantidade de colunas não é igual a quantidade de valores no insert.

Ex: (Insert into tabela(campo1, campo2, campo3) values([ô]teste[ô],[ô]teste[ô]) ou (Insert into tabela(campo1, campo2) values([ô]teste[ô],[ô]teste[ô], [ô]teste[ô])
Página 2 de 5 [49 registro(s)]
Tópico encerrado , respostas não são mais permitidas