PDA

Ver la Versión Completa : Imprimir dentro de un bucle


ciscu
21-04-2004, 10:57:14
Hola a todos!!!

Veréis, tengo un pequeño problema con la impresora cuando intento imprimir varias facturas de golpe, es decir, utilizo el siguiente código:

while not (query1.eof) do
begin
-----------
-----------
quickrep1.print;
query1.next;
end;


donde en query1 le digo el intervalo de facturas que debe imprimir.

Pues el problema es que cuando se imprime la factura nº 50 me sale un mensaje de error del spoolsv.exe y me "peta" el programa; supongo que es algo de la memoria, que se va reduciendo hasta que "peta".

Podéis ayudarme a que cada vez que se hace quickrep1.print se vacie la memoria usada o cualquier otra solución para que no aparezca este error?

Cualquier ayuda será bien recibida

Gracias anticipadas!!!

__cadetill
21-04-2004, 11:04:26
Y porque no imprimes directamente la Query? Es decir, porque no haces una consulta que englobe todas las facturas y dejas que el QR haga el bucle por ti?

ciscu
21-04-2004, 11:10:19
Hola gracias por responderme Cadetill!!!

Bueno, la query1 ya recoge todas las facturas, y es necesario hacer el bucle para que me imprima la siguiente factura y asi sucesivamente. Creo que lo que me peta es el quickrep1.print, que creo que no libera memoria...

Si no es esto me puedes enviar algo de código para tener alguna guia de lo que me has dicho ?

Gracias por haberme respondido tan rápido....

__cadetill
21-04-2004, 11:22:03
Veamos, cuando tu asignas un dataset (léase TTable, TQuery, o cualquier otro componente derivado de TDataset) a un TQuickReport, éste imprime TODOS los registros contenidos en él

Entonces, si tu asignas el Query a tu Report, él solito se encargará de imprimir todas las facturas. Eso sí, el Query ha de contener TODOS los datos de las facturas (almenos los que necesites para el listado).

Si suponemos que lo que haces es un master/detail para imprimir las lineas, puedes hacer lo siguiente:
1.- O bien en la Query haces una join y recuperas cabecera y detalle en una sola query
2.- O bien haces un master/detail entre las Querys

Para ver un ejemplo de las dos soluciones, pásate por mi web y mírate la demo del QR que allí hay

Espero te sirva

ciscu
21-04-2004, 11:26:32
Cadetill, gracias por todo!!!