PDA

Ver la Versión Completa : Doble agrupación en FastReport


ciudad54
09-02-2016, 03:33:16
Buenas, tengo la siguiente data de la cual quiero agrupar por Especialidad y Médico, además de organizar por fecha.

ID - MEDICO - ESPECIALIDAD - FECHACITA
1 JOSE PEDIATRA 12/04/2016
2 JUAN DERMATOLOGO 01/03/2016
3 JOSE PEDIATRA 17/04/2016
4 MARIA PEDIATRA 12/04/2016
5 PEDRO ORTOPEDA 01/04/2016

Utilizo ADOQuery para interactuar con la data, y organizo la misma por FECHACITA ASCENDENTE al momento de hacer el llamado de impresión, pero no logro agrupar los datos de la siguiente forma:

ESPECIALIDAD: PEDIATRA
MEDICO: JOSE
FECHACITA
12/04/2016
17/04/2016
etc.....

ESPECIALIDAD: PEDIATRA
MEDICO: MARIA
FECHACITA
12/04/2016

Con cada especialidad, su medico y registros organizados ascendentemente.
Estoy utilizando Delphi XE2, FastReport y FireBird.

Gracias de antemano su ayuda!

AgustinOrtu
09-02-2016, 04:01:28
Bienvenido

Cual es el problema? Salen mal los grupos? Da error?

Como tenes configurado el reporte?

A simple vista, esta fallando porque no esta ordenado como corresponde

Deberias ordenar de acuerdo a como armas los grupos: en tu caso Especialidad, Medico, Fecha

ciudad54
09-02-2016, 04:10:23
Bienvenido

Cual es el problema? Salen mal los grupos? Da error?

Como tenes configurado el reporte?

A simple vista, esta fallando porque no esta ordenado como corresponde

Deberias ordenar de acuerdo a como armas los grupos: en tu caso Especialidad, Medico, Fecha

Gracias AgustinOrtu, sale bien el reporte pero el error es que se repiten las agrupaciones nuevamente.
Yo estoy colocando un GroupHeader1 con el campo ESPECIALIDADES y otro GroupHeader2 con el campo MEDICO y aun asi no me salen todos agrupados los registros. No se cual es mi error.

AgustinOrtu
09-02-2016, 04:22:09
Probaste cambiar el orden?

Deberias ordenar de acuerdo a como armas los grupos: en tu caso Especialidad, Medico, Fecha

ciudad54
09-02-2016, 04:34:56
Si probe cambiando los campos Medico en el groupHead1 y Especialidad en el GroupHead2 y aun asi se me repiten.
Una imagen de ejemplo del error adjunto

AgustinOrtu
09-02-2016, 04:36:22
Me referia a como los ordenas cuando haces el query


SELECT ..
FROM ..
WHERE
ORDER BY Especialidad, Medico, FechaCita

ciudad54
09-02-2016, 04:40:52
Este es el código que estoy utilizando.


dbMod.DataModule1.ADOQCitas.Close;
dbMod.DataModule1.ADOQCitas.SQL.Clear;
dbMod.DataModule1.ADOQCitas.SQL.Add('SELECT m.nombres, m.primer_apellido, m.segundo_apellido, e.detalle, c.fecha, c.expediente,');
dbMod.DataModule1.ADOQCitas.SQL.Add('p.nombres, p.primer_apellido, p.segundo_apellido,p.telefono1, p.telefono2, c.ris, c.estado');
dbMod.DataModule1.ADOQCitas.SQL.Add('from GES_MEDICO_CITA c');
dbMod.DataModule1.ADOQCitas.SQL.Add('INNER JOIN GES_MEDICO m ON (GES_MEDICO.MEDICO = GES_MEDICO_CITA.MEDICO)');
dbMod.DataModule1.ADOQCitas.SQL.Add('INNER JOIN GES_PACIENTE p ON (GES_PACIENTE.EXPEDIENTE = GES_MEDICO_CITA.EXPEDIENTE)');
dbMod.DataModule1.ADOQCitas.SQL.Add('INNER JOIN GES_ESPECIALIDAD e ON (GES_ESPECIALIDAD.ESPECIALIDAD = GES_MEDICO.ESPECIALIDAD)');
dbMod.DataModule1.ADOQCitas.SQL.Add('WHERE c.fecha >= ''' + FormatDateTime('mm/dd/yyyy',(DateTimePicker1.Date)) + '''');
dbMod.DataModule1.ADOQCitas.SQL.Add('AND c.fecha <= ''' + FormatDateTime('mm/dd/yyyy',(DateTimePicker2.Date)) + '''');
dbMod.DataModule1.ADOQCitas.SQL.Add('AND GES_MEDICO_CITA.ESTADO ='''+'REGISTRADA'+'''');
dbMod.DataModule1.ADOQCitas.SQL.Add('ORDER BY GES_MEDICO_CITA.FECHA ASC');
dbMod.DataModule1.ADOQCitas.Open;

ciudad54
09-02-2016, 05:08:17
Me referia a como los ordenas cuando haces el query


SELECT ..
FROM ..
WHERE
ORDER BY Especialidad, Medico, FechaCita


Ya comprendí y arregle esta última linea y listo:

dbMod.DataModule1.ADOQCitas.SQL.Add('ORDER BY e.detalle, m.nombres, c.fecha ASC');

Muchas gracias

Casimiro Notevi
22-03-2016, 17:43:36
Dentro De Este Foro No Se Donde Hacer Las Preguntas Para Que Me Ayuden.
Pues este es tu mensaje número 12 :confused:
Y veo que olvidaste la guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php) ;)