ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Relátorio de itens vendidos

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
anabon
Novato
Novato


Registrado: Terça-Feira, 20 de Março de 2012
Mensagens: 52

MensagemEnviada: Qua Ago 08, 2012 2:02 pm    Assunto: Relátorio de itens vendidos Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Qua Ago 08, 2012 2:30 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
anabon
Novato
Novato


Registrado: Terça-Feira, 20 de Março de 2012
Mensagens: 52

MensagemEnviada: Qua Ago 08, 2012 3:07 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Qua Ago 08, 2012 4:08 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Qua Ago 08, 2012 4:10 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB