Como criar um Relatório que Calcule a Qtde de Produtos Vendidos por Cliente

Delphi

05/07/2014

Pessoal preciso criar um relatório que onde através de um filtro de data eu possa saber a quantidade de cada produto que o cliente levou
exemplo:
o cliente Paulo comprou o produto "A" duas vezes esse mês as quantidade foram 2 e 3, no caso precisava que o meu relatório fizesse essa soma referente as vendas desse mes totalizando Produto "A"= 5,
o meu banco tem as seguintes tabelas referente a essa situação:
Venda:............ID_VENDA, ID_CLIENTE, DATA, HORA, VALOR
Item_Venda:...ID_ITEM_VENDA, ID_PRODUTO, ID_VENDA, PRECO_UNITARIO, QTDADE, VALOR_TOTAL
Movimentos....ID_MOVIMENTO, ID_ENTRADA_SAIDA, TABELA, DATA, TIPO_MOVIMENTO, DESCRICAO_MOV, QTDE_MOV
Saidas............ID_SAIDA, ID_PRODUTO, DATA, QTDE_SAIDA, MOTIVO


Queria saber se alguem tem alguma ideia como posso fazer isso, estou utilizando DELPHI 2010 E Banco de Dados FIREBIRD;
Fabio

Fabio

Curtidas 0

Respostas

Ricardo

Ricardo

05/07/2014

Qual componente vc esta usando para fazer o relatório?
GOSTEI 0
Fabio

Fabio

05/07/2014

Estou usando o AdoQuery, e o QuickReport como ferramente de relatorio
GOSTEI 0
Ricardo

Ricardo

05/07/2014

Você pode criar a função para somar os campos e atribuir o valor a uma variável ou usar o componente TQRExpr do próprio quickreport.

Você insere ele no form e vai na propriedade expression e coloca SUM(nome do campo que ser somar).
GOSTEI 0
Fabio

Fabio

05/07/2014

Sim eu até pensei em algo assim , porem se foi feita digamos que cinco vendas para um cliente eu preciso somar os produtos repetidos, ou seja eu preciso somar todas as vendas feitas para esse cliente por um determinado periodo entende?
preciso de um relatorio de gasto de produto por cliente...
GOSTEI 0
Ricardo

Ricardo

05/07/2014

Se eu não estou entendendo errado... por exemplo:

período de X a Y

cliente comprou produto A em 3 datas

Produto A qtd. 2 data 00/00/0000
Produto A qtd. 4 data 00/00/0000
Produto A qtd. 1 data 00/00/0000

Certamente no relatório vc vai ter um campo para exibir o nome do produto e outro para as quantidades, então só colocar a função sum(qtd) no expression do componente.
GOSTEI 0
Fabio

Fabio

05/07/2014

Amigo quase isso vou explicar bem detalhado o que estou quero fazer:
ter um form la que se posso digitar o cliente e dois timepiker`s e um botão para gerar o relatorio
etao na verdade vou precisar trabalhar com um ralatorio master-detail, e precisar buscar de alguma forma o historico de vendas para esse cliente, para entao somar a quantidade
de Produto "A" que ele levou do periodo x a y, dai pensei se existe alguma forma via sql pra fazer isso entende?
GOSTEI 0
Ricardo

Ricardo

05/07/2014

Lógico que tem!

Seria mais ou menos assim:

with query do
begin
close;
sql.clear;
sql.add('select vendas.*, itens.* from vendas, itens where vendas.id_venda = itens.id_venda');
sql.add('and data >= :pdatainicial and data <= :pdatafinal');
params.ParamByName('pdatainicial').Value := datainicial;
params.ParamByName('pdatafinal').Value := datafinal;
Open;
end;
GOSTEI 0
Fabio

Fabio

05/07/2014

Sim é quase isso porem observe minhas tabelas
Venda:............ID_VENDA, ID_CLIENTE, DATA, HORA, VALOR
Item_Venda:...ID_ITEM_VENDA, ID_PRODUTO, ID_VENDA, PRECO_UNITARIO, QTDADE, VALOR_TOTAL

na tabela venda tem o Código do CLIENTE porem nao tem o campo qtdade, já na tabela Item_Venda, tem o campo QTDADE mas nao tem o campo ID_CLIENTE, dae queria saber se tem alguma forma de fazer esse relatório sem mexer nas tabelas, porque eu dividi uma pra ficar o registro da venda e outra pra ficar os itens da venda que recebe muitos pra muitos entende?
GOSTEI 0
POSTAR