Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-11-2007
marlulipe marlulipe is offline
No confirmado
 
Registrado: jun 2007
Posts: 16
Poder: 0
marlulipe Va por buen camino
Unhappy Composite Report : problema!

Hola... también estoy con un problema con el composite, pero un poco diferente. Les cuento: tengo 3 formularios A, B y C

A: se llama desde el menu y se eligen alumno y curso al que pertenece para mostrar en los reports los examenes q rindio y notas
B: es llamado por A y contiene un quick report con varios datos tomados de la BD. Ademas contiene el composite report
C: contiene otro quick report que quiero adosar al reporte en A.

Hago lo siguiente, en el Form A cuando hace click en el botón para ver el reporte:

// FORM A
procedure tFormA.ButtonClick(Sender...){
if(FormB=nil) then
Application.CreateForm(TFormB, FormB);
}

// FORM B
procedure tFormB.FormCreate(Sender...){
// ... tomo datos de la BD

QRCompositeReport.Preview;

// ...
}

procedure TFormB.QRCompositeReportAddReports(Sender..);
begin
with (QRCompositeReport.Reports) do begin
Add(QuickRenFormB);
Add(FormC.QuickRenFormC);
end;
end;

En la línea de código marcada en rojo es en la cual tengo problemas, porque mi form C es nil, no está creado aún. Intenté varias cosas como crearlo antes del preview del composite pero solo me muestra el form C y luego cuando intenta hacer el preview me da error.
Nunca creo los formularios hasta que los necesito, y luego los destruyo, Sé cuál es el error pero no sé cómo solucionarlo y no sé cómo se suelen manejar uds en la creación de forms

Agradeceré muchísimo su ayuda!!! Espero que entiendan el resumido código que puse y sino no duden en preguntar!
Responder Con Cita
  #2  
Antiguo 24-11-2007
chavi chavi is offline
Miembro
 
Registrado: jun 2003
Ubicación: Santiago
Posts: 13
Poder: 0
chavi Va por buen camino
Unhappy Error

Estoy intentando el ejemplo de Lepe 1º y me da el error:

[Error] Polizas.pas(2712): Undeclared identifier: 'TCompositeReport'

Al declarar

Var
c:TCompositeReport;

Tengo que llamar alguna 'Uses'? Llamo a Printers y tampoco.
Uso QR 3.0.5

Saludos

Chavi
Responder Con Cita
  #3  
Antiguo 24-11-2007
chavi chavi is offline
Miembro
 
Registrado: jun 2003
Ubicación: Santiago
Posts: 13
Poder: 0
chavi Va por buen camino
Unhappy Error

Estoy intentando el ejemplo de Lepe 1º y me da el error:

[Error] Polizas.pas(2712): Undeclared identifier: 'TCompositeReport'

Al declarar

Var
c:TCompositeReport;

Tengo que llamar alguna 'Uses'? Llamo a Printers y tampoco.
Uso QR 3.0.5

Saludos

Chavi
Responder Con Cita
  #4  
Antiguo 24-11-2007
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 23
salvica Va por buen camino
Hola chavi, yo lo hago de la siguiente forma:
- Tengo un formulario para cada informe a incluir en el Composite.
- Tengo un formulario con el Composite. (en el uses deben estar los anteriores)
- Tengo un formulario principal con un botón, en el cual:
a) - Creo los forms a utilizar en el composite
b) - En cada formulario puse un procedimiento público, para que rellene el Dataset que le corresponda y lo llamo después de crear el form correspondiente
c) - Llamo al Composite para que genere el informe completo
d) - Cuando vuelve de imprimir, cierro los Dataset
e) - Elimino los forms

El composite, en su procedimiento solo tiene:
Código Delphi [-]

uses
  frmQReportTitulo,   { Form_QReportTitulo   }
  frmQReportExtremas, { Form_QReportExtremas }
  frmQReportPresion,  { Form_QReportPresion  }
  frmQReportNubes,    { Form_QReportNubes    }
  frmQReportCifrado;  { Form_QReportCifrado  }

{$R *.dfm}

procedure TForm_QReportDatos.QRCompositeReport_OnAddReports(
  Sender: TObject);
begin
{ añadir informes a la hoja }
  with QRCompositeReport do begin
       Reports.Add( Form_QReportTitulo.QuickRep_TITULO     );
       Reports.Add( Form_QReportExtremas.QuickRep_EXTREMAS );
       Reports.Add( Form_QReportPresion.QuickRep_PRESION   );
       Reports.Add( Form_QReportNubes.QuickRep_NUBES       );
       Reports.Add( Form_QReportCifrado.QuickRep_CIFRADO   );
  end;
end;
Y el evento OnClick del botón de form principal (es un poco largo, pero bueno)
Código Delphi [-]

procedure TForm_Impresion.Button__OnClick(Sender: TObject);
begin
{ impresion de los cuadernos }
  if( FormatDateTime('dd', FECHA_HOJA)='01' ) then begin
      MsgBox( 'IMPRESIÓN DE PORTADAS',
              'Se va a imprimir la portada del cuaderno'+OS_CRLF2+
              'Si desea utilizar una cartulina, pongala en la impresora.'+OS_CRLF2+
              'Pulse el botón para comenzar imprimir...',
               btnAccept, smbAtencion, btnAccept );
    { impresion de la portada del cuaderno }
      Application.CreateForm(TForm_QReportPortada, Form_QReportPortada);
      with Form_QReportPortada do begin
           RellenarPortada( DIR_MAIN+OS_Separador+USUARIO+OS_Separador, FECHA_HOJA );
           QuickRep__Portada.Preview;
           Free;
      end;
  end;
{ crear los forms que compondrán la página }
  Application.CreateForm(TForm_QReportTitulo, Form_QReportTitulo);
  with Form_QReportTitulo do begin
       PonerTituloAlInforme(       FECHA_PARTE, HAY_MYSQL,
                                   DIR_MAIN+OS_Separador+USUARIO+OS_Separador );
  end;
  Application.CreateForm(TForm_QReportExtremas, Form_QReportExtremas);
  with Form_QReportExtremas do begin
     { en el informe de EXTREMAS }
       AbrirDatasetExtremas( FECHA_HOJA, HAY_MYSQL,
                                   DIR_MAIN+OS_Separador+USUARIO+OS_Separador );
  end;
  Application.CreateForm(TForm_QReportPresion, Form_QReportPresion);
  with Form_QReportPresion  do begin
     { en el informe de PRESION  }
       AbrirDatasetPresion(  FECHA_HOJA, HAY_MYSQL,
                                   DIR_MAIN+OS_Separador+USUARIO+OS_Separador );
  end;
  Application.CreateForm(TForm_QReportNubes, Form_QReportNubes);
  with Form_QReportNubes do begin
     { en el informe de NUBES  }
       AbrirDatasetNubes(    FECHA_HOJA, HAY_MYSQL,
                                   DIR_MAIN+OS_Separador+USUARIO+OS_Separador );
  end;
  Application.CreateForm(TForm_QReportCifrado, Form_QReportCifrado);
  with Form_QReportCifrado do begin
     { en el informe de CIFRADO  }
       AbrirDatasetCifrado(  FECHA_HOJA, HAY_MYSQL,
                                   DIR_MAIN+OS_Separador+USUARIO+OS_Separador );
  end;
{ impresion de los datos de la hoja del cuaderno }
  Application.CreateForm(TForm_QReportDatos, Form_QReportDatos);
  with Form_QReportDatos do begin
       QRCompositeReport_.Preview;
       Free;
  end;
{ eliminar los forms que compondrán la página }
  with Form_QReportTitulo do begin
       Free;
  end;
  with Form_QReportExtremas do begin
       CerrarDatasetExtremas( HAY_MYSQL );
       Free;
  end;
  with Form_QReportPresion  do begin
       CerrarDatasetPresion(  HAY_MYSQL );
       Free;
  end;
  with Form_QReportNubes    do begin
       CerrarDatasetNubes(    HAY_MYSQL );
       Free;
  end;
  with Form_QReportCifrado  do begin
       CerrarDatasetCifrado(  HAY_MYSQL );
       Free;
  end;
end;
Espero que te sirva

Saludos
Salvica
Responder Con Cita
  #5  
Antiguo 25-11-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Además de crear el FormC, tendrás que abrir las consultas,
Código Delphi [-]
procedure TFormB.QRCompositeReportAddReports(Sender..);
begin
    with (QRCompositeReport.Reports) do begin

      Add(QuickRenFormB);

   if not Assigned(FormC) then
   begin
      FormC := TFormC.Create(self);
      FormC.ABrirConsultas;    
      Add(FormC.QuickRenFormC);
    end;
end;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 25-11-2007
chavi chavi is offline
Miembro
 
Registrado: jun 2003
Ubicación: Santiago
Posts: 13
Poder: 0
chavi Va por buen camino
Cool Persiste el Error

Lo siento pero me sigue saliendo el error.
[Error] Prueba.pas(2742): Undeclared identifier: 'QRCompositeReport'

Este desarrollo lo tengo en D5, será que no soporta el CompositeReport?

Ya no se que pensar, pues cualquier alusión a él me da error.
Tendré que incluir alguna otra librería en Uses?

Gracias y saludos

Chavi
Responder Con Cita
  #7  
Antiguo 25-11-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Cuando tengas un error de ese tipo, busca en la ayuda de delphi (o de QuickReports en este caso) para saber donde está declarado.

O bien, añades un Form nuevo, dentro de éste añades el CompositeReport de la pestaña QReport, y te fijas en los "uses" nuevos que ha añadido.

En este caso te falta el uses QuickRpt.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 25-11-2007
chavi chavi is offline
Miembro
 
Registrado: jun 2003
Ubicación: Santiago
Posts: 13
Poder: 0
chavi Va por buen camino
Red face Desde donde lo llamo

Perdona pero es la primera vez que utilizo este componente. A ver si me aclaro; yo tengo dos Reports, uno en cada formulario distinto, luego tengo otro form a parte desde el que tengo un boton de impresión, que llama a uno, otro o los dos reports juntos, por lo que quiero hacer esto. Estoy intentando hacer esto en el form del boton desde el que se hace la llamada.
var
c:TQRcompositeReport;
begin
c := TQRcompositereport.create(self);
c.Reports.Add(FrmListPoliza.QRPoliza);
c.Reports.Add(FrmCondicionesPoliza.QRListado); c.Preview;
end;
Tengo que incluir el componente TQRcompositeReport en cada uno de los form que contienen los Report que quiero unir?

Gracias y Saludos

Chavi
Responder Con Cita
  #9  
Antiguo 26-11-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
No. El compositeReport es un mecanismo para poder añadir 3, 4 o 20 QuickReports en 1 solo (Al igual que tienes 1 combobox, pero puedes tener 20 elementos en la lista desplegable).

Tienes 2 informes llamados A y B, cada uno en un form (no tienes por qué tener esos forms, en File -> new -> QReport, añades un QuickReport sin tener que añadir un form donde incrustarlo).

Ahora tienes el FormC donde añades el qrCompositeReport y ahí tendrás que hacer un uses de los otros dos, es decir:
Código Delphi [-]
Unit UnitC; //donde estará el qrCompsiteReport (1 solo en toda la aplicación,
//           para entendernos )

interface

uses UnitA, UnitB; //necesario para acceder a los otros 2 QuickReports, lógico.

....
var
c:TQRcompositeReport;
begin
  c := TQRcompositereport.create(self);
  c.Reports.Add(FrmListPoliza.QRPoliza);
  c.Reports.Add(FrmCondicionesPoliza.QRListado); 
  c.PreviewModal;
  FreeAndNil(c);
end;

Ahora estas creando el qrComposite por código, pero en la paleta QReport tienes el componente, lo pegas en tu Form y ya te olvidas de crear y/o liberar.

En tu carpeta de delphi\Demos debes tener ejemplos de QuickReport versión 2 y 3, (son algo complejos) pero seguro que te ayudan en algo.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 26-11-2007
chavi chavi is offline
Miembro
 
Registrado: jun 2003
Ubicación: Santiago
Posts: 13
Poder: 0
chavi Va por buen camino
Thumbs up Lo voy a probar así

Muchísimas gracias por tu explicación.
Voy a probarlo y ya te comentaré.

Saludos

Chavi
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Unir imagenes jpg alain Gráficos 6 09-04-2008 22:10:29
Unir dos informes - Crystal Reports TONIAM Impresión 2 04-07-2006 16:18:57
Unir dos DBgrids Nbull Conexión con bases de datos 2 02-02-2006 09:19:00
Unir tres qry alcides SQL 6 11-07-2005 17:34:33
Unir Columnas vtdeleon SQL 4 15-06-2005 00:34:49


La franja horaria es GMT +2. Ahora son las 19:22:46.


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
Copyright 1996-2007 Club Delphi