Ich möchte aus einem Report eine PDF generieren und diese anschließend exportieren.
Unten stehender Code ist zunächst mal eine Machbarkeitsprüfung. Daher rudimentär..
Problem:
Wenn ich für den Export der Rechnung 2 Datensätze markiere und diese in SalesInvHeader übergeben werden, dann:
* durchläuft er zweimal den Repeat mit unterschiedlichen SalesInvHeader-Parameter --> korrekt
* generiert eine PDF und exportiert diese in entspr. lokale Userverzeichnis --> korrekt
ABER:
Im TempBlob stehen sofort immer 2 Rechnungen. Dh er generiert beim ersten Durchlaufen des Repeat eine PDF mit BEIDEN Rechnungen. Beim zweiten Durchlauf schreibt er dann den gleichen Blob nochmal.
Ergebnis: zwei PDF-Dokumente, die inhaltlich identisch sind.
Ich verstehe nicht, warum im TempBlob SOFORT beide PDFs geschrieben sind, obwohl er im Repeat selbst nur einen Datensatz aus SalesInvHeader in der "Hand" hat.
Wo liegt der Fehler?
- Code: Alles auswählen
SalesInvHeader := Rec;
CurrPage.SETSELECTIONFILTER(SalesInvHeader);
Z :=0;
WITH SalesInvHeader DO BEGIN
IF FINDSET THEN BEGIN
REPEAT
SaveDocumentAsPDFToStream(SalesInvHeader, TempBlob);
Z:= Z + 1;
UNTIL SalesInvHeader.NEXT = 0;
END;
END;
LOCAL SaveDocumentAsPDFToStream(DocumentVariant : Variant;VAR TempBlob : TEMPORARY Record TempBlob)
ReportID := 50176;
DataTypeMgt.GetRecordRef(DocumentVariant, DocumentRef);
TempBlob.Blob.CREATEOUTSTREAM(VarOutStream);
IF REPORT.SAVEAS(ReportID, '', REPORTFORMAT::Pdf, VarOutStream, DocumentRef) THEN
BEGIN
FileMgt.BLOBExport(TempBlob,'OST'+ FORMAT(Z) + '.pdf',FALSE);
END
ELSE BEGIN
ERROR(TxtCouldNotSaveReport, ReportID);
END;
Vielen Dank!