Codigo SQL em relatório de vendas por produto

18/08/2020

0

Bom dia,
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

Carlos

Responder

Posts

18/08/2020

Emerson Nascimento

falta uma vírgula depois de F.NOME
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);
Responder

18/08/2020

Carlos

falta uma vírgula depois de F.NOME
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
Responder

21/08/2020

Emerson Nascimento

Entre no Access, abra o teu banco de dados e utilize o assitente de consulta.
Ali você verá se a sintaxe que você está usando está correta.

Responder

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

Aceitar