Erro de Sintaxe SQL - Delphi 10.4

SQL

MySQL

Delphi

FireDAC

16/11/2022

Boa tarde!

Sou novo aqui, recentemente no projeto ainda em construção fiz o procedimento de edição no banco de dados pelo delphi com uma string maior que 255 caracteres, dividi em dois SQL.ADD(string).
Porém neste outro foi preciso muito mais por se tratar de um cadastro de produto com informações fiscais, fiz igual fiz com procedimento passado só que ao editar ele dá o erro de Sintaxe incorreta próximo a "NOME = ?, DESC = ?, AGRUPAMENTO = ?,... NCM = ?... at line 1"

dm.query_PRODPDV.Close;
dm.query_PRODPDV.SQL.Clear;
dm.query_PRODPDV.SQL.ADD('UPDATE prodpdv SET CODGTIN = :codgtin, CODREF = :codref, NOME = :nome, DESC = :desc, AGRUPAMENTO = :agrupamento, FORNECEDOR = :fornecedor, PREC_CUSTO = :custo, PREC_VENDA = :venda, ESTOQUE = :estoque, NCM = :ncm, ');
dm.query_PRODPDV.SQL.ADD('CEST = :cest, CFO = :cfo, CFOP = :cfop, UNITRIB = :unidade, ALIQUOTAICMS = :aliquotaicms, CSTICMS = :csticms, ICMSREDUC = :icmsreduc, NBM = :nbm, PIS_CONSU = :pisconsu, PIS_CONTRI = :piscontri, COFINS_CONSU = :cofinsconsu, ');
dm.query_PRODPDV.SQL.ADD('COFINS_CONTRI = :cofinscontri, ALQ_IPI = :alqipi, EX_IPI = :exipi, CODENQ_IPI = :codenqipi, CSTSAID_IPI = :cstsaidaipi, CSTENT_IPI = :cstentradaipi, DATA_ALTER = :dataalter where ID = :Id');




Este é o código utilizado, se precisar do codigo completo eu mando aqui.
Alex Almeida

Alex Almeida

Curtidas 0

Melhor post

Arthur Heinrich

Arthur Heinrich

26/12/2022

Boa tarde!

Sou novo aqui, recentemente no projeto ainda em construção fiz o procedimento de edição no banco de dados pelo delphi com uma string maior que 255 caracteres, dividi em dois SQL.ADD(string).
Porém neste outro foi preciso muito mais por se tratar de um cadastro de produto com informações fiscais, fiz igual fiz com procedimento passado só que ao editar ele dá o erro de Sintaxe incorreta próximo a "NOME = ?, DESC = ?, AGRUPAMENTO = ?,... NCM = ?... at line 1"

dm.query_PRODPDV.Close;
dm.query_PRODPDV.SQL.Clear;
dm.query_PRODPDV.SQL.ADD('UPDATE prodpdv SET CODGTIN = :codgtin, CODREF = :codref, NOME = :nome, DESC = :desc, AGRUPAMENTO = :agrupamento, FORNECEDOR = :fornecedor, PREC_CUSTO = :custo, PREC_VENDA = :venda, ESTOQUE = :estoque, NCM = :ncm, ');
dm.query_PRODPDV.SQL.ADD('CEST = :cest, CFO = :cfo, CFOP = :cfop, UNITRIB = :unidade, ALIQUOTAICMS = :aliquotaicms, CSTICMS = :csticms, ICMSREDUC = :icmsreduc, NBM = :nbm, PIS_CONSU = :pisconsu, PIS_CONTRI = :piscontri, COFINS_CONSU = :cofinsconsu, ');
dm.query_PRODPDV.SQL.ADD('COFINS_CONTRI = :cofinscontri, ALQ_IPI = :alqipi, EX_IPI = :exipi, CODENQ_IPI = :codenqipi, CSTSAID_IPI = :cstsaidaipi, CSTENT_IPI = :cstentradaipi, DATA_ALTER = :dataalter where ID = :Id');




Este é o código utilizado, se precisar do codigo completo eu mando aqui.


No texto "...ME = :nome, DESC = :desc, AGRUPA..." aparece uma coluna chamada DESC, que é uma palavra reservada, para uso com o ORDER BY.

Para utilizar nomes reservados como nome de colunas, o que não é recomendado, o nome precisa ser encapsulado (quote). Cada banco utiliza um formato diferente para isso.

Oracle: ... "DESC" = ...
MS-SQL Server: ... [DESC] = ...
MySQL: ... ´DESC´ = ...
GOSTEI 1

Mais Respostas

Alex Almeida

Alex Almeida

16/11/2022

Valeu. Já foi resolvido seguindo a mesma instrução. Acabou que no final descobri depois de umas horas e acabei esquecendo de comentar aqui.
GOSTEI 0
POSTAR