Codigo SQL em relatório de vendas por produto
18/08/2020
0
Estou com problema no meu relatório de vendas por produto, meu código SQl está dando erro,
operador faltando na expressão de consulta F.NOME e SUM([I.QUANTIDADE]),
Meu sistema e em Delphi 7 e Access 2007.
Esse mesmo código em outro banco como MYSQL funciona normalmente.
Alguem pode me ajudar, vou postar o código aki:
Add('SELECT I.CODPROD, P.DESCRICAO, P.FORNECEDOR ,F.NOME');
Add('SUM([I.QUANTIDADE]) AS TOTQUANT,');
Add('SUM([I.QUANTIDADE* I.VALORUNIT]) AS TOTVAL FROM ITENS I');
Add('INNER JOIN PRODUTOS P ON I.CODPROD = P.CODPROD');
Add('INNER JOIN VENDAS V ON I.CODPED = V.CODPED');
Add('LEFT OUTER JOIN FORNECEDORES F ON P.FORNECEDOR = F.CODFOR');
Add('WHERE DATA BETWEEN :DATA1 AND :DATA2');
ADOQ.parameters.ParamByName('DATA1').Value := StrToDate(txtDataDe.Text);
ADOQ.parameters.ParamByName('DATA2').Value := StrToDate(txtDataAte.Text);
Add('group by i.codprod,p.descricao,p.fornecedor,f.nome');
Carlos
Posts
18/08/2020
Emerson Nascimento
Add('SELECT I.CODPROD, P.DESCRICAO, P.FORNECEDOR,F.NOME,'); // faltava uma vírgula aqui Add('SUM([I.QUANTIDADE]) AS TOTQUANT,'); Add('SUM([I.QUANTIDADE* I.VALORUNIT]) AS TOTVAL FROM ITENS I'); Add('INNER JOIN PRODUTOS P ON I.CODPROD = P.CODPROD'); Add('INNER JOIN VENDAS V ON I.CODPED = V.CODPED'); Add('LEFT OUTER JOIN FORNECEDORES F ON P.FORNECEDOR = F.CODFOR'); Add('WHERE DATA BETWEEN :DATA1 AND :DATA2'); Add('GROUP BY I.CODPROD, P.DESCRICAO, P.FORNECEDOR,F.NOME'); ADOQ.parameters.ParamByName('DATA1').Value := StrToDate(txtDataDe.Text); ADOQ.parameters.ParamByName('DATA2').Value := StrToDate(txtDataAte.Text);
18/08/2020
Carlos
Add(''SELECT I.CODPROD, P.DESCRICAO, P.FORNECEDOR,F.NOME,''); // faltava uma vírgula aqui Add(''SUM([I.QUANTIDADE]) AS TOTQUANT,''); Add(''SUM([I.QUANTIDADE* I.VALORUNIT]) AS TOTVAL FROM ITENS I''); Add(''INNER JOIN PRODUTOS P ON I.CODPROD = P.CODPROD''); Add(''INNER JOIN VENDAS V ON I.CODPED = V.CODPED''); Add(''LEFT OUTER JOIN FORNECEDORES F ON P.FORNECEDOR = F.CODFOR''); Add(''WHERE DATA BETWEEN :DATA1 AND :DATA2''); Add(''GROUP BY I.CODPROD, P.DESCRICAO, P.FORNECEDOR,F.NOME''); ADOQ.parameters.ParamByName(''DATA1'').Value := StrToDate(txtDataDe.Text); ADOQ.parameters.ParamByName(''DATA2'').Value := StrToDate(txtDataAte.Text);
Emerson, boa noite e obrigado por tentar me ajudar, mais eu tinha esquecido de
colocar a vírgula, é que mesmo assim da erro de sintaxe e erro no inner join e left outer join.
esse mesmo código funciona no MySql e também no Sql Server.
Acredito que algum detalhe do Access, mais ja tentei de tudo e não vai
21/08/2020
Emerson Nascimento
Ali você verá se a sintaxe que você está usando está correta.
Clique aqui para fazer login e interagir na Comunidade :)