Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-04-2005
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Unir trabajos de impresión

Hola... Sucede que tengo una aplicación que genera reportes con Quick Report y con Rave Reports.

Con Rave Reports puedo ejecutar un método (NewPage) tal que me permite unir varios trabajos de impresión en uno sólo.

No he podido hacer esto mismo con Quick Report ni utilizando el TCompositeReport, por lo que mi aplicación genera múltiples trabajos de impresión. Esto es bueno y malo al mismo tiempo, pero no voy a discutirlo aquí.

Entonces de acuerdo a lo anterior, tengo dos opciones:

1. Hallo la forma de unir los trabajos de impresión con Quick Report, ó
2. Teniendo los trabajos en el administrador de impresión busco la forma de unirlos para que se conviertan en uno sólo (esto tendría que hacerlo desde mi aplicación). Aquí he visto que las aplicaciones generan archivos SPL y SHD generalmente en C:\WINDOWS\system32\spool\PRINTERS.

Hasta ahora no he podido realizar ninguna de estas opciones.

Como siempre agradezco mucho a quienes me puedan colaborar en este asunto, y ojalá con las dos opciones.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.

Última edición por mlara fecha: 13-04-2005 a las 19:50:44.
Responder Con Cita
  #2  
Antiguo 14-04-2005
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Solución!!!

Jajajaj... casi que no, y así de fácil. Les cuento: pude dar solución al punto uno. Aquí está:

Tengo una forma con un Edit, un Button, y el QRCompositeReport, y por otro lado un reporte muy simple con una banda tipo rbTitle y un QRLabel sobre la misma.

Aquí está la forma:


Código Delphi [-]
type
  TfMaestro = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    QRCompositeReport1: TQRCompositeReport;
    procedure BeforePrint(Sender: TCustomQuickRep;
      var PrintReport: Boolean);
    procedure QRCompositeReport1AddReports(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
, y aquí el reporte:


Código Delphi [-]
type
  TrUno = class(TQuickRep)
    QRBand1: TQRBand;
    QRLabel1: TQRLabel;
  private

  public

  end;
Ahora, en el Edit1 simplemente escribo el número de reportes que quiero imprimir (en este ejemplo hasta 10 máximo). El programa creará ese mismo número de instancias y las mostrará en el CompositeReport en páginas diferentes. Para Imprimir sólo doy click en el Button1. Aquí está el código:


Código Delphi [-]
procedure TfMaestro.BeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
  Sender.NewPage;
end;

procedure TfMaestro.QRCompositeReport1AddReports(Sender: TObject);
var
  I: Integer;
  rUno: array [1..10] of TrUno;
begin
  for I := 1 to StrToInt(Edit1.Text) do begin
    rUno[i] := TrUno.Create(fMaestro);
    rUno[i].QRLabel1.Caption := rUno[i].QRLabel1.Caption+' '+IntToStr(I);
    rUno[i].Name := 'rUno'+IntToStr(I);
    if I > 1 then begin
      rUno[i].BeforePrint := BeforePrint;
      rUno[i].Units := MM;
      rUno[i].Page.TopMargin := 100;
    end;
    QRCompositeReport1.Reports.Add(rUno[i]);
  end;
end;

procedure TfMaestro.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  QRCompositeReport1.Preview;
  // Libera reportes
  I := 1;
  while FindComponent('rUno'+IntToStr(I)) <> nil do begin
    FindComponent('rUno'+IntToStr(I)).Free;
    Inc(I);
  end;
end;
Y listo!

Me he dado cuenta de que algunas personas han preguntado precisamente cómo hacer esto, así que espero les sirva.

Ahora, alguien podría colaborarme con el punto dos? Podría ser muy útil.

Gracias.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.

Última edición por mlara fecha: 14-04-2005 a las 05:54:38.
Responder Con Cita
  #3  
Antiguo 31-05-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Grax, yo tenía el mismo problema

y esto me ayudo mucho

Tengo la información en dos consultas distintas, no puedo usar JOIN porque no me funciona de esa manera, así que lo que hice fue hace un reporte por cada consulta y luego utilizar el QRCompositeReport para unirlos en uno solo... y eso fuelo que solucionó mi problema. Creo que mi problema era menos complejo, solo tuve que hacer lo siguiente:
Código:
procedure TFrmInicial.QRCompositeReport1AddReports(Sender: TObject);
begin
  inherited;
with QRCompositeReport1.Reports do
 begin
  Add(QR1); //QR son mis reportes por separado, cada uno con su detalle
  Add(QR2);
end;
end;
al final solo mandas llamar a qrcompositereport1.Preview;
y lixto...

Grax, me pusiste en el camino correcto.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:42:25.


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