Preciso calcular as somatórias de valores de produtos vendidos, para gerar um relatório.
Mas tenho encontrado problemas... vejam:
with dmRel.QueryRelProVen do
begin
Close;
SQL.Clear;
SQL.Add('SELECT VENCOD, VENDES, SUM(VENQTD) AS QTDE, ');
SQL.Add('SUM(VENTOT) AS TOTAL, SUM(VENCUS) AS CUSTO, ');
SQL.Add('SUM((VENTOT-(VENCUS*VENQTD))) AS MARGEM FROM ESTAVEN.dbf');
SQL.Add('WHERE VENDAT BETWEEN :pDataIni AND :pDataFin');
SQL.Add('AND VENCAN IS NULL');
SQL.Add('AND VENFLA IS NOT NULL');
SQL.Add('GROUP BY VENCOD, VENDES');
ParamByName('pDataIni').AsDateTime := StrToDateTime(txtRelProVen_DataIni.Text);
ParamByName('pDataFin').AsDateTime := StrToDateTime(txtRelProVen_DataFin.Text);
Open;
end;
Quando eu calculava a somatória do campo VENTOT, o resultado saía perfeito. O total ficava em torno de 37.000
_____________________________
Mas precisei realizar um cálculo na instrução, para subtrair o valor das compras que tiverem desconto, então ficou dessa forma:
with dmRel.QueryRelProVen do
begin
Close;
SQL.Clear;
SQL.Add('SELECT VENCOD, VENDES, SUM(VENQTD) AS QTDE, ');
SQL.Add('SUM(VENTOT-((VENTOT*VENDSC)/100)) AS TOTAL, SUM(VENCUS) AS CUSTO, ');
SQL.Add('SUM((VENTOT-(VENCUS*VENQTD))) AS MARGEM FROM ESTAVEN.dbf');
SQL.Add('WHERE VENDAT BETWEEN :pDataIni AND :pDataFin');
SQL.Add('AND VENCAN IS NULL');
SQL.Add('AND VENFLA IS NOT NULL');
SQL.Add('GROUP BY VENCOD, VENDES');
ParamByName('pDataIni').AsDateTime := StrToDateTime(txtRelProVen_DataIni.Text);
ParamByName('pDataFin').AsDateTime := StrToDateTime(txtRelProVen_DataFin.Text);
Open;
end;
Mas assim, a query só retorna um resultado.
E quando eu fui ver, ela retornou 6,48 ... que é o valor do campo VENTOT do primeiro registro.
Como o VENDSC era zero, a conta realizada me pareceu que foi feita normalmente, mas parece que só foi selecionado o primeiro registro.
Alguém consegue identificar o que pode estar acontecendo?
Pergunta
Gabriel Cabral
Oi gente.
Preciso calcular as somatórias de valores de produtos vendidos, para gerar um relatório.
Mas tenho encontrado problemas... vejam:
Quando eu calculava a somatória do campo VENTOT, o resultado saía perfeito. O total ficava em torno de 37.000 _____________________________ Mas precisei realizar um cálculo na instrução, para subtrair o valor das compras que tiverem desconto, então ficou dessa forma:Mas assim, a query só retorna um resultado.
E quando eu fui ver, ela retornou 6,48 ... que é o valor do campo VENTOT do primeiro registro.
Como o VENDSC era zero, a conta realizada me pareceu que foi feita normalmente, mas parece que só foi selecionado o primeiro registro.
Alguém consegue identificar o que pode estar acontecendo?
Muito obrigado.
Editado por Gabriel CabralLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.