Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dolci

Agrupar e contat com QuickReport

Recommended Posts

Pessoal estou com um programa grave, pois não tenho conhecimento muito aprofundado de QuickReport.

 

Estoiu usando Delphi 7 com Firebird, ClienteDataSet e DBExpress para fazer uma sistema de cadastro de exames.

 

Segue tabelas:

 

EXAMESEFETUADOS

cod

data

exame1

exame2

exame3

exame4

 

TIPOEXAMES

cod

nome

 

Quero um relatório onde pegava todos os dados dos campos exame1, exame2, exame3 e exame4 que listasse, mas de uma forma que não se repita na lista, somente colocasse na frente a quantidade que se repetiu. Tipo assim

 

Tenhoo exame de crânio (por exemplo) que se repete 10 vezes, somente listasse uma vez e clocosse o 10 na frete, independente se o exame crânio esteja no campo exame1, exame2, exame3 ou exame4.

 

Colegas. Dá uma força aí!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, seu problema é algo que pode ser resolvido com um select usando count e group by, desde que monte os joins entre as tabelas apropriadamente... algo do tipo....

 

 


Select A.campoA, B.campoB, count(A.*)
from tabelaA A
inner joint tabelaB B on (A.codigo = B.codigo)
group by A.campoA, B.campoB

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Chrnos

 

Não resolveu não, veja o erro no imagem abaixo:

Imagem Postada

 

Acredito que seja porque o campo COD da tabela TIPOEXAMES está não só relacionado ao campo EXAME1 e também aos campos EXAME2, EXAME3 e EXAME4.

Veja o select:

Select
EX.EXAME1, EX.EXAME2, EX.EXAME3, EX.EXAME4, count(EX.*)
from EXAMES
inner join TIPOEXAMES TI on (EX.EXAME1 = TI.COD)
group by EX.EXAME1, TI.COD

Compartilhar este post


Link para o post
Compartilhar em outros sites

O comando group by exige que apenas colunas declaradas explicitamente no retorno sejam usadas na cláusula... uma dica que lhe dou é que teste no BD suas querys antes de codificar no delphi.

 

Em todo caso, ficaria +/- assim sua query com o group by.

 

Select EX.EXAME1, EX.EXAME2, EX.EXAME3, EX.EXAME4, count(EX.*)
from EXAMES
inner join TIPOEXAMES TI on (EX.EXAME1 = TI.COD)
group by EX.EXAME1, EX.EXAME2, EX.EXAME3, EX.EXAME4

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.