Gelegentlich, unsere Benutzer kontaktieren den Supportteam mit solcher Frage: wie kann man richtig einige Berichte zum einen, zum Beispiel, vor dem Export zusammenfügen? Es ist technisch nicht so kompliziert, aber gibt es eigene Besonderheiten. Zum Beispiel, was soll man mit verschiedenen Maßeinheiten oder mit Seitennummerierung beim Zusammenfügen von Berichten machen? Hier gibt’s keine universelle Antwort, weil alles von Zielen und Aufgaben, die der Ersteller von Berichten hat, abhängt. Um das Zusammenfügen von einigen Berichten zu einem anzuzeigen, haben wir einige Beispiele - für JS und .NET vorbereitet.

Die MergeDocument()-Methode

Man muss sagen, dass man sogar in einem kleinen Code-Stück viele Fehler machen kann. Um diesen Prozess zu vereinfachen, haben wir die Methode MergeDocument() bei der Instanz StiReport für Zusammenfügen von Berichten hinzugefügt. Im JavaScript-Berichtsgenerator wird diese Methode mergeDocumentAsync() genannt.

Die Methode verwendet als Eingabe den Bericht, deren Seiten in den aktuellen Bericht hinzugefügt werden. Die Methode hat auch die Überlastung, in der als zweiter Parameter einen booleschen Wert weitergegeben wird. Dieser Parameter legt fest, ob das vorgefertigte Rendern vom Bericht erforderlich ist. So kann man zwei Objekte StiReport in einer Zeile - report.MergeDocument(report2, true) zusammenfügen.

Auch werden bei der Verwendung von Zusammenfügen-Methode automatisch folgende Faktoren beachtet:
  • die Maßeinheiten des eingebetteten Berichtes werden in die Maßeinheiten des Hauptberichtes umgewandelt;
  • das Caching wird richtig verwaltet;
  • die Lesezeichen werden kopiert.


Die Besonderheiten der Arbeit mit Dashboards

Die Vorlage-Datei kann nicht nur die Berichtsseiten, sondern auch ein Dashboard enthalten. Das Dashboard in diesem Fall ist kein statisches Objekt, d.h. es hat keine feste Größe. Das Dashboard kann nicht erstellt werden, obwohl es die Methode Render() enthält, aber es ist nur ein Platzhalter. Die bestimmte Größe des Dashboards kann nur beim Export festgelegt werden. Darum ist es unmöglich, ein Dashboard und einen Bericht zu einem Dokument zusammenzufügen. Die Methode MergeDocument fügt nur die Berichtsseiten aus anderer Vorlage zum Hauptbericht hinzu. Wenn die Vorlage nur ein Dashboard enthält, löst die Methode die Ausnahme aus. Man muss es bei der Vorbereitung von Vorlagen für Zusammenfügen beachten.


Praktische Verwendung von der Methode

Als erstens, man muss verstehen, welcher Bericht in einen anderen eingebettet wird. Das ist wichtig, weil es die Maßeinheiten und die Seitennummerierung im Bericht beeinflusst. Berücksichtigen wir folgenden Code-Beispiel:

report1.MergeDocument(report2);

Die Seiten aus report2 werden in report1 nach seinen Seiten hinzugefügt, und in die Maßeinheiten vom report1 umgewandelt.

Daher die Befehle report1.MergeDocument(report2) und report2.MergeDocument(report1) erstellen zwei verschiedene Dokumente als Ausgang, obwohl im ersten und im zweiten Fall report1 und report2 gleich sind.

Die zweite wichtige Besonderheit gehört zum Erstellen von Berichten.
Am öftesten muss man die schon erstellten Berichte zusammenfügen. Zum Beispiel, in verschiedenen Teilen der Anwendung werden die Berichte erstellt, die man später in einen Schlussbericht zusammenfügen muss.

Es gibt auch ein anderer Ansatz – die Berichte werden in einem Platz erstellt, und dann als fertige Dokumente auf der Festplatte oder in der Datenbank gespeichert, anders gesagt, die Berichte werden zuerst angesammelt, und dann zu einem Bericht zusammengefügt. In diesem Fall sieht der Code so aus:
var report = StiReport.CreateNewReport();
report.LoadDocument("documents\\Invoice.mdc");
var report2 = StiReport.CreateNewReport();
report2.LoadDocument("documents\\Christmas.mdc");

report.MergeDocument(report2);

report.Show();
Aber in einigen Fällen muss man in einem Platz zwei Berichtsvorlagen laden, rendern und zusammenfügen. Der Code-Beispiel für Zusammenfügen von Berichten:
var report = StiReport.CreateNewReport();
report.Load("Reports\\Invoice.mrt");
var report2 = StiReport.CreateNewReport();
report2.Load("Reports\\Christmas.mrt");

report.Render();
report2.Render();
report.MergeDocument(report2);

report.Show();
Um den Code zu vereinfachen, kann man die Überlastung der Methode MergeDocument() mit zwei Parametern verwenden, und true im zweiten Parameter weitergeben. In diesem Fall wird innerhalb der Methode automatisch das Rendern von beiden Berichten aufgerufen. Zum Beispiel, der Code der Methode für Zusammenfügen von Berichten mit der Überlastung des Erstellens:
var report = StiReport.CreateNewReport();
report.Load("Reports\\Invoice.mrt");
var report2 = StiReport.CreateNewReport();
report2.Load("Reports\\Christmas.mrt");

report.MergeDocument(report2, true);

report.Show();
Wenn Sie mehr als zwei Berichte zusammenfügen wollen, ist es wichtig, die Reihenfolge zu bewahren, und erinnern sich daran, dass die Maßeinheiten des Berichtes, in den die Berichte zusammengefügt werden, verwendet werden. Ein Beispiel des Zusammenfügens von drei Berichten:
var report = StiReport.CreateNewReport();
report.Load("Reports\\Invoice.mrt");
var report2 = StiReport.CreateNewReport();
report2.Load("Reports\\Christmas.mrt");
var report3 = StiReport.CreateNewReport();
report3.Load("Reports\\Report3.mrt");

report.MergeDocument(report2, true);
report.MergeDocument(report3, true);

//report is containing a rendered pages of the report, report2 and report3
report.Show();
Für JavaScript-Berichtsgenerator wird die asynchrone Methode des Zusammenfügens – mergeDocumentAsync() verwendet. Alles, was wir oben geschrieben haben, gehört auch zur diesen Methode. Das Zusammenfügen von Berichtsseiten, sowohl das Rendern wird im asynchronen Modus verwirklicht. Entsprechend, wenn die Methode mergeDocumentAsync() mit einem Argument verwendet, und die Berichte sollen vor dem Zusammenfügen gerendert werden, muss man im JS die Methode renderAsync2() aufrufen. Ein Beispiel des Zusammenfügens von einigen Berichten:
var report = StiReport.CreateNewReport();
report.Load("Reports\\Invoice.mrt");
var report2 = StiReport.CreateNewReport();
report2.Load("Reports\\Christmas.mrt");

await report.renderAsync2();
await report2.renderAsync2();
await report.mergeDocumentAsync(report2);

viewer.report = report;
Das Zusammenfügen von einigen Vorlagen zu einem Bericht mit dem Rendern in der Methode mergeDocumentAsync(,).
var report = StiReport.CreateNewReport();
report.Load("Reports\\Invoice.mrt");
var report2 = StiReport.CreateNewReport();
report2.Load("Reports\\Christmas.mrt");

await report.mergeDocumentAsync(report2, true);

viewer.report = report;
Es wurde mehr einfach, die Berichte vor Anzeigen, Drucken, Export zusammenzufügen.
By using this website, you agree to the use of cookies for analytics and personalized content. Cookies store useful information on your computer to help us improve efficiency and usability. For more information, please read the privacy policy and cookie policy.