Ver Mensaje Individual
  #4  
Antiguo 16-11-2007
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Reputación: 21
Vlady Va por buen camino
yo imprimo mediante una unidad creada por mi pero el QRCompositeReport lo tengo en un DataModulo creo las variables de los reportes que voy a mostrar pero me aparece un error de memoria voy a poner mi codigo

Código Delphi [-]

Var
 //Reporte de prueba
  Titulo : TRContinuaTitulo1;
  Agrupado : TRAgrupado;
  ReporteTotales : TRTotales;
  ReporteIVA : TRIVAS;
Aqui defino las variables en la unidad creada por mi, no se si al crearlas quedan locales y no las puedo ver en el datamodulo
Código Delphi [-]
if TipoFactura = 'Agrupada' then
  Begin
    try
    Titulo := TRContinuaTitulo1.Create(Nil);
    Agrupado := TRAgrupado.Create(Nil);
    ReporteTotales := TRTotales.Create(Nil);
    ReporteIVA := TRIVAS.Create(Nil);
    with Titulo do
    Begin
      //Consulta de impresion
        Query1.Close;
        Query1.SQL.Clear;
        Query1.SQL.TexT := 'SELECT * FROM FACTURATOTALES(' + inttostr(Factura) + ' )';
        Query1.Active := True;
       End;
    with Agrupado do
    Begin
       ///Agrupo los productos de la Orden de servicio
        Agrupado.Close;
        Agrupado.SQL.Clear;
        Agrupado.SQL.Add('SELECT I.Grupo As Grupo, SUM(I.Valor) AS Valor FROM Servicio S, Orden_Servicio O, ItemServicio I');
        Agrupado.SQL.Add('WHERE N_Factura = '+ inttostr(Factura) +' AND S.Codigo = I.Servicio AND I.Orden = N_Orden AND I.Servicio = S.Codigo GROUP BY I.Grupo');
        Agrupado.Active := True;
     
    End;

    with ReporteTotales do
    Begin
       //Totales de la Factura
        Totales.Close;
        Totales.SQL.Clear;
        Totales.SQL.Text := 'SELECT * FROM TOTALFACTURA ('+ inttostr(Factura) + ')';
        Totales.Active := True;
 
    End;

    with ReporteIVA DO
    bEGIN
       //Totales de la Factura
        IVAS.Close;
        IVAS.SQL.Clear;
        IVAS.SQL.Text := 'SELECT * FROM TOTALFACTURA1 ('+ inttostr(Factura) + ')';
        IVAS.Active := True;
    END;
       //aqui me aparece el error
       DataM.Reporteador.Preview;
     finally
       FreeAndNil(Titulo);
       FreeAndNil(Agrupado);
       FreeAndNil(ReporteTotales);
     end;
   end;

Asi lleno el evento OnAddReports en el QRCompositeReport q se encuentra en el datamodulo


Código Delphi [-]
procedure TDataM.ReporteadorAddReports(Sender: TObject);
begin
   Reporteador.Reports.Add(Titulo);
   Reporteador.Reports.Add(Agrupado);
   Reporteador.Reports.Add(ReporteIVA);
   Reporteador.Reports.Add(ReporteTotales);
end;


Cuando muestro el QRCompositeReport llamado desde mi unidad me aparece un error de memoria e hecho un seguimiento y la secuencia no entra al evento onAddReports.

La otra opcion que pienso es crear el QRCompositeReport en tiempo de ejecución pero como lleno el evento onAddReports.

Si alguien me puede ayudar lo agradeceria ya llevo dos dias con este problema

Gracias

Última edición por Vlady fecha: 16-11-2007 a las 23:06:17.
Responder Con Cita