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.
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.
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.
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.
Ist über das Ausführen der Preview die Datei Auftragsposition.jasper erstellt worden, kann in das Hauptformular im Designer gewechselt 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.