PDA

Ver la Versión Completa : Maestro detalle FastReport. Me ayudan.


martinartaza
02-02-2011, 13:48:02
Hola estoy usando Delphi 6.0 y tengo instalado FastReport 4.0
Tengo un proyecto con 2 tabla en postgres.

CREATE TABLE persona
(
idpersona smallint NOT NULL,
nombre character varying(50),
CONSTRAINT persona_pkey PRIMARY KEY (idpersona)
)

CREATE TABLE direccion
(
iddireccion smallint NOT NULL,
idpersona smallint NOT NULL,
calle character varying(50),
CONSTRAINT direccion_pkey PRIMARY KEY (iddireccion),
CONSTRAINT fk_direccion_r_persona FOREIGN KEY (idpersona)
REFERENCES persona (idpersona) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT
)


En Delphi tengo los siguientes componentes.
3 Query (de postgresDac)

QPersona.sql:= 'select * from persona';
QDireccion.sql:= 'Select * from direccion';
QUnion.sql:= 'Select * from persona P left join direccion d on (p.idpersona = d.ipersona) order by idpersona';

Tengo además 1 componente FRXReport1 (TFRXReport) y 3 FRXDBDataSet

FRXPersona.dataset := QPersona;
FRXDireccion.dataset:= QDireccion;
FRXUnion:= QUnion;


Pregunta: ¿Qué es lo que conviene 1 o 2 de las siguientes opciones?
1: usar una banda MasterData y otra DetailData y relacionarlas con los FRXPersona y FRXDireccion.
2: Usar una banda GroupHeader y otra MasterData y relacionarla con FRXUnion.

Como hago 1.
El problema que tengo con uno, es que la banda DetailData, no tengo forma de decirle que no me muestre todos los datos, sino solamente los datos que pertenece a esa persona.
Como hago 2
El problema que tengo es que tengo es en la banda group no tengo una propiedad del tipo expresion que me diga cuando cambia el grupo.

Estuve viendo los manuales de FastReport, pero no se cual ver el de usuario, developer o programador, de cualquier forma el problema es el de siempre mi escaso ingles.

Agradecería que alguien, me explique cual es la mejor opción y como lo realizo y seria un golazo de arco a arco si me envía el archivo de reporte realizado.

Desde ya muchas gracias.

martinartaza
05-02-2011, 13:39:09
Si tengo el siguiente query.

select *
from persona p left join
telefono t on (p.idpersona = t.idpersona)


En FastReport tiro las siguientes bandas:
1 -> "Report Title" -> Donde tiro un "Text Object" (o etiqueta)0 para ponerle titulo al reporte
2 -> "Page Header" -> Donde pongo el encabezado de las columnas, tiro 2 etiquetas una que dice nombre y otra que dice apellido.
3 -> "Group Header" -> Al tirarlo, aparece una ventana donde nos dice:
Datafield (elegimos el que se relaciona con FRXUnion y a la par elegimos la columna que es PrimaryKey de la tabla Maestra, en este caso se elije IDPersona) y luego se tira los "System Text" (los del simbolito de sigma suma) y tiro uno que lo relaciono con el dataset en cuestion con la columna Nombre y el otro con el apellido.
4 -> "Master Data" -> Donde tiro una etiqueta que dice "Calle" y un "System Text" que se relaciona con el dataset y con la columna "Calle"
5 -> "Group Footer" (para este caso no me sirve, pero si necesitara totalizar o sacar un promedio, en esta banda tiro un "System Text" y me fijo en las funciones en cuestion).

Una Foto de lo que digo (en la foto uso el teléfono en vez de la dirección).

http://www.alertaenelcamino.org.ar/fastreport.JPG

Bueno, está es una forma de crear reportes maestro detalle con FastReport, me gustaría que alguien me de una mano para hacerlo con 2 dataset, ya que no lo se hacer ni con QReport un reporte con 2 dataset usando la banda detalle y la subdetalle siempre en todas las herramientas de reporte use grupos.

Desde ya muchas gracias y espero que le sirva a alguien.