Update em data e hora
10/10/2020
0
Ola Colegas,
Estou com um problemas na gravação em um campo data_hora (timestamp).
Estou utilizando o Firebird.
Erro:
Erro ao executar comando SQL
Classe de erro: TDBXError
Erro encontrado: Token unknown - line 1, column 570
1
Se eu copiar o comando e executar no IBexpert executa sem erro.
O que posso fazer para melhorar?
Usando o TSQLQuery e o TFDQuery também dá o mesmo.
Estou com um problemas na gravação em um campo data_hora (timestamp).
Estou utilizando o Firebird.
emissao := formatdateTime('dd.mm.yyyy hh:mm:ss',CampoData.Date); if Acao = 'Inserir) Then Sql := 'Insert into Tabela (codigo, emissao) Values ('+meucodigo+','+emissao) //NAO INCLUSAO DÁ CERTO Else Sql := 'Update tabela Set Emissao = '+Emissao+' Where codigo = '+Meucodigo; sqltabela.sql.text := sql; Try Sqltabela.ExecSQl; Except on e : Exception do KDialog('Erro ao executar comando SQL'#13#13'Classe de erro: '+e.ClassName+#13+'Erro encontrado: ' + e.message,'Alerta','ERRO'); end;
Erro:
Erro ao executar comando SQL
Classe de erro: TDBXError
Erro encontrado: Token unknown - line 1, column 570
1
Se eu copiar o comando e executar no IBexpert executa sem erro.
O que posso fazer para melhorar?
Usando o TSQLQuery e o TFDQuery também dá o mesmo.
Dirceu Morais
Curtir tópico
+ 0
Responder
Posts
13/10/2020
Imex
Bom dia,
Acho que é melhor utilizar parâmetros na instrução SQL sempre que possível. Ex:
obs: no código acima o campo Codigo foi considerado alfanumérico (string). Você pode adaptar a linha de código de acordo com o tipo de dados correto do campo
Espero que ajude
Acho que é melhor utilizar parâmetros na instrução SQL sempre que possível. Ex:
if Acao = 'Inserir) Then Sql := 'Insert into Tabela (codigo, emissao) Values (:Codigo, :Emissao)' Else Sql := 'Update tabela Set Emissao = :Emissao Where codigo = :Codigo'; sqltabela.sql.text := sql; Try Sqltabela.ParamByName('Codigo').AsString := meucodigo; Sqltabela.ParamByName('Emissao').AsDateTime := CampoData.Date; Sqltabela.ExecSQl;
obs: no código acima o campo Codigo foi considerado alfanumérico (string). Você pode adaptar a linha de código de acordo com o tipo de dados correto do campo
Espero que ajude
Responder
13/10/2020
Emerson Nascimento
visto que na inclusão dá certo, tente informar os campos de forma idêntica (na inclusão está tudo em minúsculas, mas na alteração está com a primeira maiúscula).
outra sugestão é fazer um typecast na data:
outra sugestão é fazer um typecast na data:
if (Acao = 'Inserir') Then Sql := 'Insert into Tabela (codigo, emissao) Values ( :codigo, :emissao )' Else Sql := 'Update tabela Set emissao = :emissao where codigo = :codigo'; sqltabela.sql.text := sql; Try Sqltabela.ParamByName('codigo').AsString := MeuCodigo; Sqltabela.ParamByName('emissao').AsSQLTimeStamp := DateTimeToSQLTimeStamp( CampoData.Date ); // unit Data.SQLTimSt Sqltabela.ExecSQl; Except on e : Exception do KDialog('Erro ao executar comando SQL'#13#13'Classe de erro: '+e.ClassName+#13+'Erro encontrado: ' + e.message,'Alerta','ERRO'); end;
Responder
Clique aqui para fazer login e interagir na Comunidade :)