Uff, vaya lío tienes ¿eh?
He editado este mensaje varias veces, espero que veas el definitivo.
En el datamodule:
Código Delphi
[-]
var
Titulo : TRContinuaTitulo1;
Agrupado : TRAgrupado;
ReporteTotales : TRTotales;
ReporteIVA : TRIVAS;
implementation
En esa unidad tuya que no dices como se llama ni que hace

:
Código Delphi
[-]
if TipoFactura = 'Agrupada' then
Begin
try
datam.Titulo := TRContinuaTitulo1.Create(Nil);
datam.Agrupado := TRAgrupado.Create(Nil);
datam.ReporteTotales := TRTotales.Create(Nil);
datam.ReporteIVA := TRIVAS.Create(Nil);
with datam.Titulo do
Begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.TexT := 'SELECT * FROM FACTURATOTALES(' + inttostr(Factura) + ' )';
Query1.Active := True;
End;
with datam.Agrupado do
Begin
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 datam.ReporteTotales do
Begin
Totales.Close;
Totales.SQL.Clear;
Totales.SQL.Text := 'SELECT * FROM TOTALFACTURA ('+ inttostr(Factura) + ')';
Totales.Active := True;
End;
with datam.ReporteIVA DO
bEGIN
IVAS.Close;
IVAS.SQL.Clear;
IVAS.SQL.Text := 'SELECT * FROM TOTALFACTURA1 ('+ inttostr(Factura) + ')';
IVAS.Active := True;
END;
qrCompositeReport1.Reports.Add(datam.Titulo);
QRCompositeReport1.Reports.Add(datam.Agrupado);
QRCompositeReport1.Reports.Add(datam.ReporteIVA);
QRCompositeReport1.Reports.Add(datam.ReporteTotales);
qrCompositeReport1.PreviewMODAL; finally
QRCompositeReport1.Reports.Clear;
FreeAndNil(datam.Titulo);
FreeAndNil(datam.Agrupado);
FreeAndNil(datam.ReporteTotales);
¿el de iva no lo liberas?? ¿por qué?
end;
end;
El evento OnAddReport del Qrcomposite reports se ejecuta cuando haces esta línea:
Código Delphi
[-]
qrCompositeReport1.Reports.Add(titulo);
pero eso lo haces dentro del mismo evento OnAddReports, así que:
- No se ejecuta nunca (por eso no entra en el evento OnAddReports.
- Si se llega a ejecutar alguna vez, dará recursión (desbordado de pila).
Para lo que quieres, no debes usar el evento OnAddReports para nada.
Saludos