Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Impresión informe de ocupación > 1 Página (https://www.clubdelphi.com/foros/showthread.php?t=29051)

Cabanyaler 11-01-2006 12:20:51

Impresión informe de ocupación > 1 Página
 
Hola, espero sea lo más sencillo de solucionar.... :rolleyes:
He estado buscando pero no he encontrado nada.

Veamos mi estado y cual es el objetivo:
Estoy diseñando un informe donde la información a mostrar consta de una banda de cabecera rbTitle, otra rbDetail (que contiene los datos de la tabla maestra) y varias bandas de tipo TQRSubDetail de varias tablas relacionadas con la master como tablas esclavas.
El problema es que toda esa información no me cabe en una sola página y necesito añadir más bandas de tipo Subdetail para llenar si es preciso varias hojas A4 en apaisado.

Pregunta:
¿Como puedo diseñar un informe con el QReport de varias hojas?.

Gracias por vuestro tiempo y un saludo.

Cabanyaler 11-01-2006 16:31:13

Lo he intentado con el componente de la paleta del QuickReport denominado TQRCompositeReport con el siguiente código:

Código:

procedure TFLisFiltro_ConCliObr.QRCompositeReportLisConCliObrAddReports(
  Sender: TObject);
begin
    QRCompositeReportLisConCliObr.Reports.Add(QRLisConCliObr1);
    QRCompositeReportLisConCliObr.Reports.Add(QRLisConCliObr2);
end;

Pero me imprime primero todas las páginas del QRLisConCliObr1 y posteriormente todas las páginas del segundo QRLisConCliObr2, mientras lo que yo quiero es que me imprima la página del QRLisConCliObr1 y seguidamente el contendo de la página del QRLisConCliObr2 para completar la información de una tupla, para continuar con la siguiente tupla imprimiendo el QRLisConCliObr1 y después el QRLisConCliObr2 y así sucesivamente.
Para ello he utilizado este código:

Código:

procedure TFLisFiltro_ConCliObr.QRBandCabezaListadoBeforePrint(
  Sender: TQRCustomBand; var PrintBand: Boolean);
begin
    QRLisConCliObr1.NewPage;
end;

... y puesto la propiedad de la banda del título del QRLisConCliObr1.ForceNewPage := True (aunque en el libro de Ian Marteens dice que esta no funciona). :confused

Si alguien me puede ayudar... se lo agradeceré. Un saludo.

Cabanyaler 12-01-2006 10:04:52

Tambien he seguido estos pasos extraidos de la siguiente URL http://delphi.about.com/library/bluc/text/uc051701h.htm y que a continuación anexo:

Cita:

QRComposite Report
QRComposite report does not work in an intuitive fashion. It does much more than simply calling one report after the other. Because a metafile is created for each page and this file is used to send data to the printer, Qrcomposite report uses this feature to make all the reports behave like one big report with each page being created and sent in one operation. To use this component, follow these steps:

1. Design all the reports you are using, each one in it's separate file and form. Add the units to the calling form so it can use them.

2. Place a QRCompositeReport component on your main form.

3. Click on the Add reports event and place code there to call each report in the order you want. Like this:

Código:

procedure Tform1.
 QRCompositeReport1AddReports
 (Sender : Tobject);
begin
 with QRCompositeReport1.Reports do
 begin
  Add(RepCustomer.Report);
  Add(RepSales.Report);
  Add(RepTotals.Report);
end;

4. In your main form's code add the line to print or preview this component. Like This:

QRCompositeReport1.Preview;


When you call this, the composite component calls each report in turn and adds the second through last report's pages to the first report's pages creating one large report. This is an attempt to seamlessly stitch together different reports to give the user the idea that all this output came from one report. It can be very useful if you have one report showing detail records and then need to print a report showing summaries for example. Another approach would be to simply call each report in turn individually, but this may not give the impression to the user that you may want. Having the Composite report component gives you a choice.

Pero el resultado es el mismo, primero tira todos las páginas del primer Report y a continuación todas las páginas del segundo Report :(

Cabanyaler 13-01-2006 16:04:45

... Bueno... visto "lo poco potente" que es este generador de informes y ante la situación de tener que sacar esto adelante y la imposibilidad de comprar otro generador de informes, lo hago de diferente forma.
No he encontrado solución, haga lo que haga, lo configure como lo configure, me sale primero todo el contenido de todas las páginas de un Report y posteriormente todas las paginas correspondientes al segundo Report; cosa indeseada.:mad:

¿De verdad que nadie conoce como poder imprimir 1 Página del Report1 + 1 Página del Report2 + 1 Página del Report1 + 1 Página del Report2 ......? en lugar de todas las paginas del Report1 y luego todas las del Report2.

Voy a acabar haciendolo del siguiente modo:Recorreré con un bucle todas las tuplas de la tabla master y en cada iteración del bucle haré una llamada al QuickReport1.Print con una banda Detalle vacia y asignando los valores de los atributos de la tabla master a etiquetas de una banda de tipo cabecera. Las tuplas de las tablas esclavas estarán en bandas detail hasta llenar el contenido de la página del Quickreport1 y después haré una segunda llamada al QuickReport2 donde encontraré más bandas detalle con el resto de las tablas esclavas. De ese modo espero conseguir el efecto de impresión de página 1 segida de la página 2 con el resto de los datos de la tupla master. Y así para cada iteración del bucle, hasta acabar con el .eof de la tabla master.

Cabanyaler 17-01-2006 12:30:31

Fet, arreglat, sol.lucionat i funcionant. :D


La franja horaria es GMT +2. Ahora son las 15:18:23.

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