Wenn es mit nur einer Rechnung funktioniert mach es Dir doch einfach und "Prepare" alle Einzelrechnungen. Dann zeigst Du den kompletten Report an oder druckst ihn aus (in dem Beispiel habe ich sogar 3 Datasets, Belegkopfdaten, Positionsdaten und Summendaten mit mehreren Mehrwert-Steuersätzen):
Delphi-Quellcode:
with TPrintModule.Create(Application) do
begin
// BelegIds ist ein dynamisches Array mit den IDs der Belege ;)
for i := 0 to High(BelegIds) do
begin
qryBKopf.ParamByName('Id').AsFloat := BelegIds[i];
qryBKopf.Open;
qryBPos.Open;
qrySummen.Open;
if Length(BelegIds) > 1 then
frxReport1.ReportOptions.Name :=
Format('%s - %s',['Sammeldruck', qryBelegart.FieldByName('Beleg_text').AsString])
else
frxReport1.ReportOptions.Name :=
Format('%1:s %0:s',[qryBKopf.FieldByName('Bnr').AsString, qryBelegart.FieldByName('Beleg_text').AsString]);
frxReport1.PrepareReport(False);
qryBKopf.Close;
end;
frxReport1.ShowPreparedReport;
Free;
end;
Die statischen Werte aus BKopf landen im TFrxPageHeader sowie TfrxReportSummary. Die Positionsdaten und Summendaten befinden sich in zwei TFrxMasterData.