Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Generar un reporte en Quickreport maestro/detalle/subdetalle (https://www.clubdelphi.com/foros/showthread.php?t=44007)

Goyo 25-05-2007 22:41:34

Generar un reporte en Quickreport maestro/detalle/subdetalle
 
miren lo que quiero hacer es realizar un reporte de nomina que contiene los grupos de direcciones y sus respectivos departamentos, para ello manejo 5 tablas en paradox (solo pondre las mas importantes, que se involucran en el reporte principal):

Tabla: TbEmpleados (Principal que contiene todos los datos de los empleados)
[quote]
Campo Tipo
id_trabajador + (key)
id_direccion N
id_depto N
id_puesto N
nombre A
sueldobase $
compensacion $
despensa $
...
... por mencionar algunos campos

Cita:

Tabla: TbDirecciones
Campo Tipo
id_direccion +
Nombredireccion A

Tabla: TbDepartamentos
Campo Tipo
id_departamento +
id_direccion N
NombreDepto A

Tabla: TbPuestos (categorias)
campo Tipo
id_puesto +
nombrepuesto A
la idea es que se formen grupos por Direcciones, a su vez por departamentos y que al final me muestre un Subsubtotal por departamento (al terminar cada departamento) y un Subtotal por Direccion (al terminar la Direccion) y al final de todos las direcciones y departamentos, me imprima un Total General de todos los subsubtotales y subtotales de la direcciones y departamentos. por ejemplo:
Cita:

ENCABEZADOS DEL REPORTE
ID_EMP - R.F.C. - NOMBRE DEL EMPLEADO - SDO. BASE - COMPENSACION - DESPENSA

Direccion: 01 DIRECCION GENERAL
Departamento: 01 SECRETARÍA TECNICA
1 AAAA770104 ANTONIO ALAZAN ANALCO 200.00 150.00 50.00
2 BBBB540314 BERNAL BERNAB BASILIO 100.00 100.00 20.00
.
**Subsubtotal (suma departamento)** 300.00 250.00 70.00
.
Departamento: 02 DEPARTAMENTO JURIDICO
4 AAAM770104 MANUEL ALAZAN ANALCO 200.00 150.00 50.00
5 BBBJ540314 JOSEL BERNAB BASILIO 100.00 100.00 20.00
.
**Subsubtotal (suma departamento)** 300.00 250.00 70.00
.
*Subtotal (suma direccion)* 600.00 500.00 140.00
.
Direccion: 02 DIRECCION DE PLANEACION
Departamento: 03 DEPTO. DE PROGRAMACION
8 AAAM770104 MANUEL ALAZAN ANALCO 200.00 150.00 50.00
9 BBBJ540314 JOSEL BERNAB BASILIO 100.00 100.00 20.00
.
**Subsubtotal** 300.00 250.00 70.00
.
Departamento: 04 DEPARTAMENTO EVALUACION
14 AAAM770104 MANUEL ALAZAN ANALCO 200.00 150.00 50.00
15 BBBJ540314 JOSEL BERNAB BASILIO 100.00 100.00 20.00
.
**Subsubtotal (sumas departamentos)** 300.00 250.00 70.00
.
*Subtotal (suma direccion)* 600.00 500.00 140.00

***Total (suma total de direcciones)*** 1200.00 1000.00 280.00
espero y me haya dado a entender, creo muchas veces es facil diseñar el sistema y lo complicado viene al realizar los informes (reportes)... bueno saludos y de momento muchas gracias

Caral 25-05-2007 23:09:17

Hola Goyo
Es cierto a veces el reporte es lo que mas cuesta y se nos sale de las manos.
He hecho reportes con cinco tablas, pero nunca con un maestro detalle, lo hago por sentencia sql, me resulta mas facil ver y analizar la consulta de esta forma, tambien la modificacion de la misma, si es el caso.
Saludos

ContraVeneno 26-05-2007 00:34:21

Lo más sencillo sería que utilizaras un TQuery para traer toda la información.
Enlazar tu reporte a este TQuery
Y utilizar bandas TQRGRoup para hacer las agrupaciones que necesitas.
Para los subtotales y totales, puedes utilizar varios TQRExpr y al final un banda tipo Summary.

Goyo 29-05-2007 21:44:41

Tablas en un tquery para maestro/detalle/subdetalle
 
1 Archivos Adjunto(s)
coloque dos componentes TQuery y un DataSource; y uni todas las tablas de la siguiente manera:

TQuery1 = MasterQry
Código SQL [-]
select * from Archcard a inner join CatDirecciones d on (d.Id_direccion = a.Id_direccion)
inner join CatDepartamentos s on (s.Id_departamento = a.Id_departamento)
inner join CatPuestos p on (p.Id_puesto = a.Id_puesto) 
order by d.Id_direccion, s.id_departamento, p.id_puesto


TQuery2 = DetalleQry
Código SQL [-]
select * from Archcard a where (a.id_direccion=:id_direccion) order by id_direccion, id_departamento, id_puesto

coloque varios : QRBand1 y en su propiedad BandType: rbPageHeader (titulos)
QRBand2 y en su propiedad BandType: rbColumnHeader (Cabeceras del titulo)
QRGroup y en su propiedad Expression: TQMasterQry.Id_direccion (aqui se imprime el campo id_direccion y NombreDireccion) que sera el grupo principal
QRBand3 y en su propiedad BandType: rbDetail (Cabeceras del titulo) (aqui imprimo el Subgrupo: id_Departamento y NombreDepartamento

QRGroup y QrBand3 los campos que imprimo aqui pertenecen a MasterQry

QRSubDetail1 y en su propiedad DataSet : DetalleQry, aqui imprimo lo que sera el cuerpo del programa, todos los campos de mi tabla TbEmpleados (Archcar.db)

ahora cuando hago la prueba de la impresión: si me toma los datos agrupados por direcciones, solo que por departamentos no :( , me repite los mismos registros, como le puedo hacer para que me agrupe por Direcciones (que al final me mande un total de la direccion) y por departamentos (que dependen de la misma direccion, ademas su subtotal)...

aqui les pongo una imagen de lo que les comento y de antemano muchas gracias....

ContraVeneno 29-05-2007 23:33:08

Pues nada más habría que agregar otra banda TQRGroup


La franja horaria es GMT +2. Ahora son las 08:43:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi