Codigo SQL em relatório de vendas por produto
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');
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
Curtidas 0
Respostas
Emerson Nascimento
18/08/2020
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);
GOSTEI 0
Carlos
18/08/2020
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
GOSTEI 0
Emerson Nascimento
18/08/2020
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.
Ali você verá se a sintaxe que você está usando está correta.
GOSTEI 0