Erro de Sintaxe SQL - Delphi 10.4

16/11/2022

0

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

Responder

Post mais votado

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´ = ...

Arthur Heinrich

Arthur Heinrich
Responder

Mais Posts

27/12/2022

Alex Almeida

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar