Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
anabon Novato

Registrado: Terça-Feira, 20 de Março de 2012 Mensagens: 52
|
Enviada: Qua Ago 08, 2012 2:02 pm Assunto: Relátorio de itens vendidos |
|
|
Olá amigos boa tarde....
Mais uma vez preciso da ajuda de vcs....
È o seguinte quero fazer um relátorio onde mostre só os produtos vendidos em um intervalo de datas. Ate ai tudo bem, o problema é que eu queria que no relátorio só me listase uma vez só cada produto e a quantidade total de venda naquele intervalo de datas tipo assim:
Citação: | Cod. Prod. Descrição $Item Quantidade
10 camisa fem. 10,00 5 |
só que aparece assim:
Citação: | cod prod. descrição $ Item Quantidade
10 camisa fem. 10,00 5
10 camisa fem. 10,00 1 |
consegui explicar?
Para somar os itens vendidos estou usando uma ADOQuery NO SQL dela coloquei assim:
Código: | Select SUM(quantidade)
from CONTA_ITEM
where COD_PROD =:COD_PROD |
Para Filtrar a pesquisa uso outra ADOQuery com a SQL:
Código: | SELECT * FROM CONTA_ITEM
WHERE DATA_VENDA between :D1 and :D2 |
Para Chamar o relátorio:
Código: | procedure TFrmIntem_Data.SpeedButton1Click(Sender: TObject);
var
D1,D2 : TDateTime;
begin
D1 := DateTimePicker1.Date;
D2 := DateTimePicker2.Date;
With Conexao2.QueryR_Vendas do
begin
Conexao2.QueryR_Vendas.Close;
Conexao2.QueryR_Vendas.SQL.Text := 'SELECT * FROM CONTA_ITEM WHERE DATA_VENDA <= :D1 AND DATA_VENDA <= :D2 ';
Conexao2.QueryR_Vendas.Parameters.ParamByName('D1').Value := D1;
Conexao2.QueryR_Vendas.Parameters.ParamByName('D2').Value := D2;
Conexao2.QueryR_Vendas.ExecSQL;
Conexao2.QueryR_Vendas.Open;
FrmRQ_Vendas.contador :=0;
FrmRQ_Vendas.QuickRep1.Preview;
end;
END; |
Desde já agradeço quem puder me ajudar....
Forte Abraço... |
|
Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qua Ago 08, 2012 2:30 pm Assunto: |
|
|
o select basico pra isso é assim:
digamos q vc tenha as tabelas produtos, vendas e vendas_itens
Código: | SELECT p.cod_produto, p.descricao, SUM(vi.quantidade), SUM(vi.total)
FROM produtos p
INNER JOIN vendas_itens vi ON vi.cod_produto = p.cod_produto
INNER JOIN vendas v ON v.cod_venda = vi.cod_venda
WHERE v.data BETWEEN :data1 AND :data2
GROUP BY p.cod_produto, p.descricao
ORDER BY p.descricao
|
_________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Editado pela última vez por joemil em Qua Ago 08, 2012 4:04 pm, num total de 1 vez |
|
Voltar ao Topo |
|
 |
anabon Novato

Registrado: Terça-Feira, 20 de Março de 2012 Mensagens: 52
|
Enviada: Qua Ago 08, 2012 3:07 pm Assunto: |
|
|
Olá obrigada joemil pela ajuda, mas é assim, toda a informação que eu preciso já está em uma tabela só, Na tabela CONTA_ITEM, então eu não precisaria ligar eles com o INNER JOIN, usando a tuda ajuda tirei então as partes que interligava duas tabelas e ficou assim:
Código: | SELECT * FROM CONTA_ITEM
WHERE DATA_VENDA between :D1 and :D2 ORDER BY DESCRICAO |
Mas ainda o relátorio continua igual... desde já peço perdão se a resposta for incricelmente facíl... sou nova em programação....
Desde já agradeço que puder me audar |
|
Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qua Ago 08, 2012 4:08 pm Assunto: |
|
|
vc tem q usar um SUM com GROUP BY pra totalizar.
SELECT cod_produto, descricao, SUM(qtde), SUM(qtde * valor) FROM tabela
WHERE ...
GROUP BY cod_produto, descricao _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qua Ago 08, 2012 4:10 pm Assunto: |
|
|
e vc precisa normalizar seu banco de dados, senao qdo tiver mtos itens vendidos, a tabela ira ficar mto grande e lenta.
veja um exemplo:
PRODUTOS
-----------
COD_PRODUTO
DESCRICAO
VALOR
ITENS
----------
COD_PRODUTO
QUANTIDADE
VALOR
DATA
e pra listar, use JOINs entre as tabelas _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
 |
|