4.5 Makroberichte als Datenquelle für JasperReports

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

Zur Superx-Homepage SuperX ist auch ein CampusSource-Projekt. Zur CampusSource-Homepage | Powered by FreeMarker Seite 147 / 158
Letzter Update: 7.9.2023
Impressum| Datenschutz