PDA

Ver la Versión Completa : Delphi 7 y Quick Report --- Ayuda Agrupamiento!!!


seb@
15-05-2014, 15:41:07
hola foro!!!, tengo un problema con respecto a quick report y agrupamiento. trabajo con D7 y Quick Report 4.04
Mi problema es el siguiente: en un AdoQry, tengo los siguientes datos:


id_medico id_paciente
----------------------------
4404 440627
4404 440627
4404 292604
237592 292604
237592 440627


lo quiero hacer en el reporte es agrupar los medicos con los pacientes, deberia quedar asi:


medico paciente
-----------------
4404
440627
440627
292604
237592
292604
440627


En el reporte lo que hice fue agregar las siguientes bandas:
TQRBand (PageHeader)
TQRGroup (Group Header) -> En expression tengo el campo: id_medico. En la banda tambien pongo el id_medico para que se imprima
TQRBand (Detail) -> Pongo el id_paciente para que se imprima
TQRBand (Group Footer) -> Vacio

Cuando lo ejecuto me sale:

4404
440627


Solo el primer registro. Si alguien me puede dar una mano agradecido. De antemano Gracias!

ecfisa
15-05-2014, 18:19:59
Hola seb@.

Pone las tablas en relación master/detail:

ADOQueryMedicos:
SELECT ID FROM MEDICOS
ADOQueryPacientes:
SELEC ID FROM PACIENTES WHERE PACIENTES.ID = :ID
Y relaciona la propiedad DataSource de ADOQueryPacientes con el TDataSource asociado a ADOQueryMedicos.

Luego en QuickReport:

TQuickRep:
DataSet <- ADOQueryMedicos (maestro)

TQRBand:
BandType <- rbDetail
TQRDBLabel <-Data
DataField <- ID (médicos)
DataSet <- ADOQueryMedicos

TQRSubDetail:
DataSet <- ADOQueryPacientes (detalle)
TQRDBLabel
DataField <- ID (pacientes)
DataSet <- ADOQueryPacientes


Saludos :)

seb@
15-05-2014, 20:34:13
en que momento se inicializa el qry de pacientes? o en que evento?
saludos y gracias!

ecfisa
15-05-2014, 20:51:52
en que momento se inicializa el qry de pacientes? o en que evento?
saludos y gracias!
Hola seb@.

Los ADOQueries los podes inicializar en diseño o ejecución indistintamente. Una vez establecida la relación maestro/detalle, el reporte traerá los datos.

Te adjunto un ejemplo similar basado en customer y ordes de dbdemos.mdb (vienen con Delphi 7) para que puedas revisarlo con tranquilidad.

Saludos :)

seb@
15-05-2014, 21:14:51
Gracias por la ayuda ahi, lo pude solucionar,
lo hice así:

un solo qry con los datos medicos y pacientes ordenados por medicos.

el dataset del reporte con el Qry mencionado.
un QRBand --> rbPageHeader
un TQRGroup --> en expression id_medico y en la misma banda los datos del medico
un TQRSubDetail --> bando para datos del paciente
un QRBand --> rbGroupFooter

Funciona bien, gracias por la ayuda.!!

AzidRain
17-05-2014, 22:01:43
Como lo hiciste al final es la mejor forma ya que no tienes que mover las tabals y puedes sacar reportes por grupos aunque las tablas no estén relacionadas en la BD. La clave es crear el query correcto que fue lo que hiciste.