Subreports eigenen sich für die Darstellung von Daten in tabellarischer Form oder als Liste, zudem kann der Subreport mit einer eigenen Datenquelle versehen werden.
In dieser Erläuterung wird ein Subreport erstellt und zusammen mit dem Hauptreport im Designer getestet.
Formular erstellen
Das Erstellen des Subreports ist ganz analog zum Erstellen eines Hauptreport. Für unser Auftragsbeispiel wird das Formular wie folgt eingerichtet.
In diesem Beispiel werden all Bands bis auf Column Header und einem Detail entfernt.
Da der Subreport in das Auftragsbeispiel-Formular eingebettet wird, ist die Breite eines Detail-Band für den Subreport relevant. In diesem Fall sind es 525px.
Damit sich der Subreport nahtlos in den Hauptreport einfügt, werden alle Ränder entfernt.
Datenquelle erstellen
Der Subreport verwendet die selbe Datenbankverbindung wie der Hauptreport. Das Erstellen der Datenquelle erfolgt ganz analog zum Hauptreport
select ap.dblvknetto, ap.dblvknettogesamt, ap.intpos, ap.dblmenge, ei.strname "streinheit", ar.strname from nuclos.t_eo_auftragsposition ap left outer join nuclos.t_eo_einheit ei on ei.intid = ap.intid_streinheit, nuclos.t_eo_artikel ar where ap.intid_strauftrag =$P{Intid} and ar.intid = ap.intid_strartikel order by ap.intpos asc
Wichtig: Es muss der selbe Parameter Intid erstellt werden. Am besten er wird aus dem Hauptreport importiert.
Felder einfügen und .jasper erzeugen
- Mit Drag & Drop können die Felder in den Detail-Band eingefügt werden, dabei wird gleichzeitig ein Static-Text Feld im Culumn-Band angelegt.
- Die Zahlenfelder werden für die Ausgabe formatiert #,##0.00 1000er Separation durch ein Punkt und Komma mit zwei Dezimalstellen
- Für die Positionierung der Feldinhalte stehen 9 Möglichkeiten zur Verfügung. Weitere Formatierungsmöglichkeiten pro Feld stehen z.B. mit einem Rechts-Klick auf das Feld unter "Padding and Borders" zur Verfügung.
Blau umrandet: Soll die Menge mit ihrer Einheit ausgegeben werden, ist hier eine Möglichkeit abgebildet dies zu tun. Die Expression Class des Feldes ist String.
Ist die Datenquelle korrekt erstellt und sind die Felder auf dem Formular eingefügt, kann über den Preview-Button ein Test durchgeführt werden. Dabei wird die selbe Intid übergeben, wie sie für den Hauptreport verwendet wird. Wenn die Preview fehlerfrei ausgeführt wurde, legt iReport eine Auftragsposition.jasper an.
Subreport im Hauptreport einbauen
Ist über das Ausführen der Preview die Datei Auftragsposition.jasper erstellt worden, kann in das Hauptformular im Designer gewechselt werden.
- Über die Palette wird die Komponente Subreport gewählt.
- Es öffnet sich der Subreport-Wizard. Dort muss "Use an existing report" gewählt werden und der
- entsprechende Report in unserem Fall Auftragspositionen.jasper geladen werden.
Im nächsten Schritt kann die Datenquelle gewählt werden mit der der Subreport verbunden ist. In unserem Fall ist es die Selbe.
Nun kann der Subreport im Formular platziert werden. Generell kann ein Subreport an jede Stelle des Dokumentes eingebunden werden, jedoch muss darauf geachtet werden das nicht jedes Band automatisch mit dem Subreport expandiert(column-Footer, Lastpage-Footer....).
Das Auftragsbeispiel kann nun im ganzen getestet werden.
Der Parameter Intid existiert in beiden Formularen und garantiert die Zugehörigkeit der der Daten des Subreports zum Hauptreport.
In diesem Fall die Daten der Auftragspositionen zum Auftrag.
Mit der Erstellung eines Parameters wird Pfad und Name unseres Subreports festgelegt.