Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#38

AW: Wie erzeugt man heutzutage (Massen)Druckoutput?

  Alt 8. Jul 2016, 19:18
Anstelle Template zu verwenden die manuell erstellt sind, könnte man versuchen das gesamte Layout dynamisch zu erzeugen. Das geht bei einigen mir bekannten Reportgeneratoren entweder indem man die Reportdefinitionsdatei per Code erzeugt, oder über ein Layout-API.
Dann würde man nur noch ein Programm benötigen, das über diese API die gewünschten Variationen der Reportlayouts erzeugt.

Mit diesem Programm würde man den Report dann aus Bausteinen zusammensetzen, die speziell dem geschäftlichen Feld angepasst sind.

Das Zusammenbauen kann hart kodiert im Code ablaufen:

Code:
Quartalsabrechnung := TQAbrechnung.Create;
Quartalsabrechnung.AddInfoBlock(...);
Quartalsabrechnung.AddWerbungsBlock(...);
QuartalsabrechnungLayout := Quartalsabrechnung.ErstelleLayout;
LayoutRepository.AddLayout(REPORT_QA, QuartalsabrechnungLayout);
An das generierte Layout werden dann alle Datensätze übergeben.

Code:
ReportGenerator := TRG.Create;
ReportGenerator.Layout := LayoutRepository.LoadLayout(REPORT_QA);
ReportGenerator.LoadDataSet(...);
ReportGenerator.CreateReport;
...

Manuelle Nachbearbeitung der generierten Layouts sollte dann nicht mehr stattfinden.


p.s. Auf jeden Fall würde ich vermeiden, zur Laufzeit des Reportgenerators noch Code mit Datenbankzugriff auszuführen. Eine Funktion, die innerhalb des Ausdrucks noch Lookupfelder in der Datenbank nachschlägt wäre ein No-Go. Für die saubere Trennung wäre es zum Beispiel möglich, die Daten als XML Dokument bereitzustellen.
Michael Justin
  Mit Zitat antworten Zitat