Ir para conteúdo
Fórum Script Brasil
  • 0

Exibir apenas um entre vários registros


Gabriel Cabral

Pergunta

Oi gente.

Desculpem, mas não soube me expressar muito bem no título do tópico.

Estou fazendo um relatório que lista os produtos vendidos, buscado na tabela de vendas.

Mas não é para listar os produtos reptidas vezes.

Por exemplo: Pão Francês foi vendido várias vezes em um dia, então terá vários registros em que o campo VENDES é Pão Francês.

Eu preciso imprimir tal produto uma vez só, em apenas uma linha... mas preciso também, junto com ele, a somatória do valor total dos pães vendidos.

Supondo que na tabela tenha:

COD VENDA    COD PRODUTO    DESCRIÇÃO      VALOR TOTAL
00001        00001        Pão Francês       2,00
00002        00001        Pão Francês       3,50
00003        00001        Pão Francês       0,40
Preciso que no relatório fique:
COD PRODUTO        DESCRIÇÃO      VALOR TOTAL
00001            Pão Francês       5,90

Já tentei de tudo...

group by, select distinct [mas esse não vai funcionar, pois os campos não tem valores iguais em todos os registros]

O que vocês sugerem que eu faça?

Muito obrigado

Editado por Gabriel Cabral
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

O problema é que eu também preciso selecionar a data, a quantidade e outros campos.

E dessa forma eu preciso colocar também esses campos no Group By, mas aí não ficaria do jeito correto.

E quando tem mais de um tipo de produto.. pão e leite, por exemplo... como vou calcular o total do pão e o total do leite, separadamente? porque do jeito que está, ele só soma tudo, sem distinção.

Não consigo achar um caminho pra fazer isso.

Link para o comentário
Compartilhar em outros sites

  • 0
O problema é que eu também preciso selecionar a data, a quantidade e outros campos.

E dessa forma eu preciso colocar também esses campos no Group By, mas aí não ficaria do jeito correto.

e o q seria o jeito correto?? qual o problema q vai acontecer se você incluir no group by??

porque do jeito que está, ele só soma tudo, sem distinção.

não soma não. como você ve se é pao ou leite?? não é pelo codigo ou descricao??

então se você usar aquele codigo q passei, ele vai somar separado sim, ue.

Link para o comentário
Compartilhar em outros sites

  • 0

Minha consulta está dessa forma, mas ainda não está dando certo.

procedure TfrmRelProVen.btnGerarRelClick(Sender: TObject);
var codForn, codPro, descPro: string;
begin

  with dmRel.QueryRelProVen do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT VENCOD, VENDES, VENQTD , SUM(VENTOT) AS TOTAL, SUM(VENCUS) AS CUSTO FROM ESTAVEN.dbf');
    SQL.Add('WHERE VENFOR = :pForn AND');
    SQL.Add('VENCAN IS NULL');
    SQL.Add('GROUP BY VENCOD, VENDES, VENQTD');

    ParamByName('pForn').AsString := txtRelProVen_CodForn.Text;

    Open;

    if not (IsEmpty) then
    begin
      txtVentot.Text := dmRel.QueryRelProVen.FieldByName('TOTAL').Value;
      txtVencus.Text := dmRel.QueryRelProVen.FieldByName('CUSTO').Value;      
    end;
  end;

  dmRel.RvPrjProVen.SetParam('Ventot', txtVentot.Text);
  dmRel.RvPrjProVen.SetParam('Vencus', txtVencus.Text);
  dmRel.RvPrjProVen.ExecuteReport('rptProVen');

end;

Essa consulta pegaria tres itens:

Pão

Maçã

Água

Mas está pegando todos os pães, todas as maçãs e todas as águas da tabela vendas, e seus respectivos valores e quantidades e tudo mais.

Tem algo errado aí.

Link para o comentário
Compartilhar em outros sites

  • 0

gabriel, mas se você tem a maca, e em um registro ela aparece com a quantidade 5. em outro aparece com a quantidade 7. é logico q no group by vai aparecer um registro pra cada quantidade. o group by vai agrupar quando os registros forem semelhantes. se forem diferentes, ele não pode escolher um ou outro. ou você soma a quantidade tb, ou você da um jeito de especificar qual quantidade você quer q apareca, ou você mostra todas as q existirem.

de qualquer forma, ainda não entendi se o problema é realmente esse. acho q o melhor seria você mostrar umas linhas de exemplo de como esta saindo e um exemplo de como você gostaria q saisse.

Link para o comentário
Compartilhar em outros sites

  • 0

Então.. por isso disse que talvez o Group By não desse certo... por que ele pega registros iguais...

Retirei o VENQTD do Select, pois ele não será exibido no relatório.

Como agora o Group By ficou apenas com o Código e Descrição do produto, o relatório está saindo assim:

COD PRODUTO      DESCRIÇÃO      VALOR TOTAL
0000000000077     Maçã                 4,00
7892840812416     Pão                   4,00
Como tem dois registros da maçã, um com total 2,50 e outro com 1,50.. o valor total está certo. Mas o pão, que tem dois registros também, um com total 5 e outro com 2,50... deveria ter valor total 7,50 Então o relatório deveria sair assim:
COD PRODUTO      DESCRIÇÃO      VALOR TOTAL
0000000000077     Maçã                 4,00
7892840812416     Pão                   7,50

Ele tá pegando o valor total dos primeiros itens agrupados e "atribuindo" aos outros também.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...