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.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.
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
Curtir tópico
+ 0
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.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.
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
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
Clique aqui para fazer login e interagir na Comunidade :)