Erro de Sintaxe SQL - Delphi 10.4
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
Curtidas 0
Melhor post
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.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´ = ...
GOSTEI 1
Mais Respostas
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