PDA

Ver la Versión Completa : problemas con detalle/subdetalle en qreport


JESUSNET
09-10-2007, 00:21:42
hola de nuevo tengo un problema al imprimir un reporte, ya he abanzado con lo que me han respondido en los foros pero tengo un nuevo problema es el siguiente:

tengo 2 tablas principalmente una se llama resultados_laboratorio y la otra detalles

la tabla detalles contiene codigoclasificacion que guarda relacion con la tabla clasificaciones y codigosubclasificacion relacionada con subclasifcaciones: si tengo en la tabla de detalles lo siguiente:

codresultado codigoclasificacion codigosubclasificacion resultado
1 1 1 normal
1 1 2 2mg
1 4 4 normal

lo que quiero es sacar las clasificaciones con sus subclasificaciones por separado hojas diferentes

por ejemplo en la primera hoja saldrisa

clasificacion :1
1 normal
2 2mg

en la siguinet hoja:

clasificacion: 4
4 normal

claro los codigos los sustituiria por sus resectivos nombres es solo para que tengan una idea

yo lo hice como me habian dicho en el foro pero me bota los datos asi

en una hoja
clasificacion 1:
1 normal
en la otra hoja
clasificacion 1:
2 2mg
y en la otra
clasificacion: 4
4 normal

como pueden notar me bota todos los registros de la tabla de detalle no me agrupa las subclasificaciones por sus respectivas clasificaciones necesito ayuda el codigo que estoy usando es este:

datamodule2.ADOQuery5.Close;
datamodule2.ADOQuery5.SQL.Clear;
datamodule2.ADOQuery5.SQL.Add('Select *from "resultados_emitidos","detalles_resultados_emitidos","pacientes","convenios","clasificaciones","servicios"');
datamodule2.ADOQuery5.SQL.Add('where resultados_emitidos.codresultado =detalles_resultados_emitidos.codresultado');
datamodule2.ADOQuery5.SQL.Add('and resultados_emitidos.cedula_paciente=pacientes.cedula');
datamodule2.ADOQuery5.SQL.Add('and resultados_emitidos.codigo_convenio=convenios.codigo');
//datamodule2.ADOQuery5.SQL.Add('and detalles_resultados_emitidos.codigo_clasificacion=clasificaciones.codigo');
datamodule2.ADOQuery5.SQL.Add('and detalles_resultados_emitidos.codigo_subclasificacion=servicios.codigo');
datamodule2.ADOQuery5.SQL.Add('and servicios.codigo=detalles_resultados_emitidos.codigo_subclasificacion');
datamodule2.ADOQuery5.SQL.Add('and servicios.codigo_clasificacion=clasificaciones.codigo');
datamodule2.ADOQuery5.SQL.Add('and resultados_emitidos.codresultado = :codresultado');
bcodresultado:=dbedit1.text;
datamodule2.ADOQuery5.Parameters[0].Value := ''+bcodresultado+'';
datamodule2.ADOQuery5.Open;
frmcompositereport.QRCompositeReport1.Preview;

y en la banda detalle coloco el nombre de la clasificacion y en la subdetalle
coloco el nombre de la subclasificacion asi como su resultado

droguerman
09-10-2007, 04:41:26
yo veo que si te bota los resultados bien pero seguramente has puesto alguna propiedad para que cada nuevo registro se imprima en una página nueva, revisa las propiedades, no tengo delphi en este momento a la mano sino podría decirte cual es.

además asegurate que la propiedad master del subdetalle apunte correctamente a el reporte

Caro
09-10-2007, 15:41:19
Hola JESUSNET, creo que no estas haciendo bien tu relación maestro detalle, te explico como se hace, haremos sobre la tabla que pusiste arriba.

Diagamos que tengamos lo siguiente:

Tabla Clasificaciones
codigo descripcion
1 clasisificacion1
4 clasisificacion4


Tabla Detalles
codresultado codigoclasificacion codigosubclasificacion resultado
1 1 1 normal
1 1 2 2mg
1 4 4 normal


1. Tienes que tener dos querys una que hara de maestro y otra de detalle, el primer query lo usaremos en la banda Detail y el segundo query en la banda subdetail.

2. Cada query tiene su datasource respectivo digamos query1->datasource1 y query2->datasource2, para que tengan la relación maestro detalle, el query2 (detalle) en su propiedad datasource debe apuntar al datasource1.

3. El primer query debe tener la siguiente consulta: SELECT * FROM clasificaciones

4. El segundo query debe tener: SELECT * FROM DETALLE codigoclasificacion=:codigo

5. La propiedad DataSet de tu quickreport debe apuntar a tu query maestro que seria query1.

6. En tu banda detail pones todos tus campos de tu query1 y tu banda subdetail los campos de tu query2.

7. Por ultimo la propiedad Master de tu banda SubDetail debe apuntar a QuickRep1 (tu reporte).

Saluditos

JESUSNET
10-10-2007, 19:23:49
Gracias caro por respponder ya logre hacer lo que queria lo que hice fue hacer una consulta extendida a las tablas resultados,detalles_resultados,clasificaciones,subclasificaciones con un solo query, en el reporte agrege una bada header otra group para agrupar los detalles por clasificacion y un banda Detalle para mostrar todo me funciona perfecta mente, solo que tengo un nuevo problema, pero lo planteare en un nuevo hilo.Gracias

lejia
15-10-2007, 22:35:58
Como lo has echo jesus net. porque yo tengo una query o consulta ordenada por un campo, y quiero visualizar ese campo, ytodos los campos que pertenezcan a el, y despues el siguiten campo y todos los correspondientes con el,