Sie können als Datenquelle für JR nicht nur einzelne Masken nehmen, sondern auch die Ausgabe von Makro-Masken. Dadurch können die verschiedenartigsten Informationen aus den normalen Masken für übergreifende Berichte genutzt werden.
Das folgende Beispiel zeigt, wie im KLR-Bericht "Berichtsblatt: Kennzahlen aus der Kostenrechnung" Teile verwendet werden, um einen eigenen JR zu erzeugen, der wiederum Elemente des Makroberichts als Unterbericht nutzt.
Zunächst rufen Sie den Makrobericht auf:
Das Bild zeigt die ersten drei Elemente des Makros, sie werden mit einer Ordnungsnummer durchnummeriert.
Wir laden dazu die XML-Datenquelle herunter, die XML-Datenquelle binden wir wie gewohnt in JasperReports ein:
Dann klicken wir im Browser über den Tabellen den Button rechts von "Bericht entwerfen" → Leerer Bericht. Die JRXML-Datei speichern wir wie gewohnt .
Im Designer sehen wir nun bei den Feldern eine erweiterte Liste:
Wir sehen also, daß die Ergebnisspalten mit einem Präfix für die Tabellennummer versehen sind, z.B. "tab_0". Dadurch können wir die Tabellen und somit auch die jew. Spalten eindeutig identifizieren. Dies ist gleichzeitig der Hauptbericht. Das Detail-Band löschen wir (ist nicht nutzbar), stattdessen aktivieren wir ein Summary Band.
Dann erzeugen wir den Unterbericht für Studierenden-VZÄ. Dazu speichern wir die obige jrxml-Datei z.B. mit dem Namen makro_beispiel_ub_stud.jrxml und entfernen das Titel-Band und Seitenfuß-Band. Dann fügen wir im Designer einen Parameter "ordnr" hinzu:
Der Unterbericht bekommt dann in der Report Query folgende Änderung:
Die Ordnungsnummer wird vom Hauptbericht übergeben und dient dazu, in der XML-Datenquelle auf die einzelne Tabelle zu filtern.
Zusätzlich geben wir noch einen weiteren Filter ein, damit die Summenzeilen aus der Originaltabelle nicht in die Kreuztabelle aufgenommen werden:
Damit der Unterbericht auch "stand-alone" ausführbar ist, können Sie dem Parameter "ordnr" auch einen Standardwert zuweisen, hier z.B. "2":
Nun können wir die Kreuztabelle mit dem Assistenten erzeugen. Für unser Beispiel enthält die Kreuztabelle Studierenden-VZÄ nach Studiengang und Fachkennzeichen:
Wir speichern den Unterbericht und binden ihn in den Hauptbericht im Summary Band ein. Dabei vergeben wir wie gewohnt die Parameter XML_LOCALE und XML_NUMBER_PATTERN. Außerdem erzeugen wir den Parameter "ordnr", und weisen diesem den Wert 2 zu, weil die Studierenden-Tabelle die Ordnungsnummer 2 hat (s.o.):
Damit ist die Konfiguration beendet, der Bericht sieht so aus:
Weitere Unterberichte lassen sich analog hinzufügen.
Hinweis zum Einbinden im Servlet: Unterberichte arbeiten nur mit der Datenquelle XML, daher müssen Sie die Datei des Hauptberichts mit dem Suffix "_xmlsource" versehen.
Druckversion HTML
| | Seite 147 / 158 Letzter Update: 7.9.2023 Impressum| Datenschutz |