Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   error al ejecutar un reporte varias veces (https://www.clubdelphi.com/foros/showthread.php?t=17907)

mar65 25-01-2005 18:41:39

error al ejecutar un reporte varias veces
 
Hola, tengoa una aplicacion en delphi5 con paradox. Tengo un reporte que utiliza un maestro detalle y tengo que imprimirlo varias veces para diferentes personas. Meti la creacion y liberacion del reporte dentro de un do while con la tabla maestro dando un next al final luego pregunto si desean seguir imprimiendo y despues de algunas impresiones, empieza a marcar un erro de que el componente qrstandardpreview ya existe e interrumpe las impresiones, este error lo marca despues del next y nunca es en el mismo numero de impresion.

Gracias

Mar

marcoszorrilla 25-01-2005 19:42:07

Supongo que cierras el formulario en donde está el informe y lo vuelves a abrir, para que se destruyan todos sus componentes?
Código Delphi [-]
 While .....
   Application.CreateFomr(TMiFormReporte, MiFormReporte);
   MiFormReporte.MiReporte.Print;
   MiFormReporte.Close
 
 end:
y en en OnClose del Formulario que contiene el informe:

Código Delphi [-]
 Application.ProccessMessages;
 FreeAndNil(MiReporte);
 Action:=CaFree;

Un Saludo.

mar65 26-01-2005 09:23:58

muchas gracias lo intente pero no resulto, el mensaje que manda es: ' a component named qrstandardpreview already exist' y el codigo es el siguiente:
Código Delphi [-]
   while not tbrecibo.Eof do
   begin
     rec := inttostr(tbrecibo.fieldbyname('n_recibo').asinteger);
     qrrecibo := Tqrrecibo.Create(Application);
     with qrrecibo do
     try
       tbrecibo.open;
       tbrecibo.filter := '(n_recibo=' + chr(39) + rec + chr(39) + ')';
       tbrecibo.filtered := true;
       tbdetallerecibo.open;
       (folio viene de la forma que manda llamar el reporte)
       if folio = 1 then
         qrlfolio.caption := 'RECIBO:  ' + tbrecibo.fieldbyname   ('n_recibo').asstring
       else
         qrlfolio.caption := '';
          preview;
       tbrecibo.close;
       tbdetallerecibo.close;
     finally
         free;
     end;
     tbrecibo.next; (aqui manda el error en cualquier momento)
     if MessageDlg('¿Deseas Seguir Imprimiendo Recibos?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
       folio := 0
     else
       break;
   end;
 


Gydba 26-01-2005 13:01:28

Hola,

Te recomendaría utilizar las etiquetas del club que le hacen la vida más fácil al que lee el mensaje y vive una vida de indetados de códigos :)

No sé que reporteador estás utilizando ni si le llamás "imprimir" a mostrar una formulario con vista previa por pantalla. Lo cierto es que tenés un problema con la creación de los objetos y su liberación, puesto que si es una vista previa y le hacés un Free te va a estar matando el objeto cada tanto por lo que deberías mover el Try fuera del bucle. Caso contrario la respuesta del amigo Marcos es totolmente adecuada.

Saludos!


La franja horaria es GMT +2. Ahora son las 22:54:35.

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