GARANTIR DESCONTO

Fórum Select não soma #58358

08/06/2007

0

With IBQuery1 do
Begin
Close;
SQL.Clear;
SQL.Add(´Select QUANTIDADE, DATA, NUMEROPRODUTO, QUANTVENDIDA, PRECOUNITARIO,´+
´PRECOTOTAL, LUCROTOTAL, DESCONTO, PAGO, NUMEROCLIENTE,´+
´Sum(QUANTVENDIDA) as Quant, Sum(PRECOTOTAL) as Total,´+
´Sum(LUCROTOTAL) as Lucro, Sum(DESCONTO) as Desco from Vendas´);
SQL.Add(´Where (DATA >= :DtInicial and DATA <= :DtFinal)´);
SQL.Add(´Group by DATA, QUANTIDADE, NUMEROPRODUTO, QUANTVENDIDA, PRECOUNITARIO,´+
´PRECOTOTAL, LUCROTOTAL, DESCONTO, PAGO, NUMEROCLIENTE´);
ParamByName(´DTINICIAL´).AsDate := (DataInicial);
ParamByName(´DTFINAL´).AsDate := (DataFinal);
Prepare;
Open;
End;


Edilcimar

Edilcimar

Responder

Posts

08/06/2007

Acacio

Não entendi direito, não está somando ou não está mostrando nada.
O tipo DataInicial é DateTime ou data simples.


Responder

Gostei + 0

08/06/2007

Edilcimar

Mostra tudo, seleciona a data corretamente, só não soma!


Responder

Gostei + 0

08/06/2007

Acacio

Bom, o group by faz a quebra por cada campo diferente que está
contido nele. Tem que ver se realmente é necessário mostrar todos os campos nessa consulta.


Responder

Gostei + 0

08/06/2007

Edilcimar

sim, todos os campos são necessários, pois o cliente precisa saber tudo que comprou e todos os detalhes das vendas, mas mesmo colocando apenas um único produto diversas vezes ele continua não somando


Responder

Gostei + 0

10/06/2007

Acacio

Eu vi alguns problemas no teu sql por exemplo:
Tais querendo mostrar os campos QUANTVENDIDA, PRECOTOTAL,
LUCROTOTAL e somar ao mesmo tempo, eu tirei esses campos dessa consulta e começou a somar certo. Tire eles do Group by também.
Não tem sentido quere somar e mostrá-los.


Poste uma mensagem se deu certo.


Responder

Gostei + 0

11/06/2007

Edilcimar

Eu tenho que somar a quantidade vendida, o total, o lucro e o desconto para poder informar ao cliente, eu não posso oferecer informações pela metade


Responder

Gostei + 0

11/06/2007

Emerson Nascimento

acho que o que o colega está dizendo é que você está utilizando os mesmos campos para exibição e para agrupamento.

tente assim:
With IBQuery1 do
Begin
  Close;
  SQL.Clear;
  SQL.Add(
    ´Select DATA, NUMEROPRODUTO, PRECOUNITARIO, NUMEROCLIENTE,´+
    ´Sum(QUANTVENDIDA) as QuantidadeVendida, Sum(PRECOTOTAL) as Total,´+
    ´Sum(LUCROTOTAL) as Lucro, Sum(DESCONTO) as Desco from Vendas´);
  SQL.Add(´Where (DATA >= :DtInicial and DATA <= :DtFinal)´);
  SQL.Add(´Group by DATA, NUMEROPRODUTO, PRECOUNITARIO, NUMEROCLIENTE´);
  ParamByName(´DTINICIAL´).AsDate := (DataInicial);
  ParamByName(´DTFINAL´).AsDate := (DataFinal);
  Prepare;
  Open;
End;



Responder

Gostei + 0

11/06/2007

Edilcimar

Para mim, eu nem ao menos preciso agrupar nada, porém se deixar um dos campos (qualquer um) fora do group by, a sql dá um erro


Responder

Gostei + 0

11/06/2007

Acacio

Para todos os campos mostrados antes do from e que não seja somatória tem que aparecer no Group by. No group by todos os campos que forem colocados ali, mesmo que não esteja na primeira parte do sql
ele fará uma quebra para cada campo diferente então qualquer campo diferente que esteja no group by fara uma quebra sendo assim por isso ele não esta quebrando fiz o sql abaixo e ele está somando. Para entender melhor tire todos os campo e coloque um a um até achar a melhor solução.



SQl:

Select --QUANTIDADE,
DATA,NUMEROPRODUTO,PRECOUNITARIO,
--PAGO,
NUMEROCLIENTE,Sum(QUANTVENDIDA) as Quant,
Sum(PRECOTOTAL) as Total,
Sum(LUCROTOTAL) as Lucro, Sum(DESCONTO) as Desco
from Vendas
where (DATA >= ´01/01/2007´ and DATA <= ´07/30/2007´)
Group by --QUANTIDADE,
DATA,NUMEROCLIENTE,NUMEROPRODUTO,PRECOUNITARIO--,PAGO,


Responder

Gostei + 0

12/06/2007

Edilcimar

Como informei anteriormente QUALQUER campo que eu venha a tirar do group by dá um erro na sql!
Simplesmente é impossível rodar sem o group by ou sem qualquer um dos campos no group by, não importa qual campo eu retire ele simplesmente dá um erro de sql, caso coloque todos os campos, aí ele funciona mas não soma


Responder

Gostei + 0

12/06/2007

Acacio

Você executou este último sql que postei? Qual éo Firibirt que tais usando? E por último tentasse executar este sql num Console?


Responder

Gostei + 0

12/06/2007

Emerson Nascimento

With IBQuery1 do
Begin
  Close;
  SQL.Clear;
  SQL.Add(
    ´Select NUMEROCLIENTE, NUMEROPRODUTO, ´+
    ´Sum(QUANTVENDIDA) as QuantidadeVendida, Sum(PRECOTOTAL) as Total, ´+
    ´Sum(LUCROTOTAL) as Lucro, Sum(DESCONTO) as Desco from Vendas´);
  SQL.Add(´Where (DATA >= :DtInicial and DATA <= :DtFinal)´);
  SQL.Add(´Group by NUMEROCLIENTE, NUMEROPRODUTO´);
  ParamByName(´DTINICIAL´).AsDate := (DataInicial);
  ParamByName(´DTFINAL´).AsDate := (DataFinal);
  Prepare;
  Open;
End;



Responder

Gostei + 0

12/06/2007

Edilcimar

Acácio -> Sim tentei executar mas dá erro
Emerson -> reclama da falta do campo data, e quando é selecionado, dá erro na sql


Responder

Gostei + 0

13/06/2007

Adriano_servitec

Para mim, eu nem ao menos preciso agrupar nada, porém se deixar um dos campos (qualquer um) fora do group by, a sql dá um erro
Olah amigo, mais vc que que apareça por exemplo somente a soma total de cada sum cfe. a data citada?

Se for, vc pode fazer por exemplo no query na propriedade SQL assim

Select sum(quantvendida)as QuantidadeVendida, sum(precototal)as total, sum(lucrototal) as lucro, sum(desconto)as desconto FROM vendas


Bom neste caso eu fiz assim somente para pegar os fields de cada soma e jogar em quatro DBText os fields.

Depois num button posso fazer o filtro assim
With ZQuery1 do
Begin
  Close;
  SQL.Clear;
    SQL.Add(
    ´Select Sum(QUANTVENDIDA) as QuantidadeVendida, Sum(PRECOTOTAL) as Total, ´+
    ´Sum(LUCROTOTAL) as Lucro, Sum(DESCONTO) as Desconto from Vendas´);
  SQL.Add(´Where (DATA between :DtInicial and :DtFinal)´);
  ParamByName(´DTINICIAL´).AsDate := strtodate(mask1.text);
  ParamByName(´DTFINAL´).AsDate := strtodate(Mask2.text);
  //Prepare;
  Open;
end;


Fiz aqui e funcionou, aou menos se eu filtrar apareçe o resultado cfe. as datas que eu quero.

Bom a nao ser que tenha que mostrar mais algo em algum dbgrid na hora de filtrar.


Responder

Gostei + 0

14/06/2007

Edilcimar

Adriano, o que eu quero é mostrar o campo data, preço unitário, preço total, desconto e lucro.
Quero somar os campos preço total, desconto e lucro para efetuar cálculos com eles e mostrar ao cliente, qual foi o lucro bruto e qual o total de desconto e lucro líquido, isto entre 2 datas a escolha do cliente, portanto tenho que mostrar todos os campos citados


Responder

Gostei + 0

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

Aceitar