Sprache: Deutsch · English
Abhängige Datensätze im Report darstellen – Subreports hochladen, per Parameter einbinden und mit Datenquellen versorgen.
HOW-TO ANWENDUNGSENTWICKLER STAND: JUL 2026 GILT FUER NUCLOS 4.2026.X
Auf dieser Seite
Ein Subreport stellt abhängige Datensätze (z.B. Auftragspositionen zu einem Auftrag) innerhalb eines Hauptreports dar. Da JasperReports Subreports nicht einbettet, werden sie getrennt vom Hauptreport gespeichert.
Im Unterformular Subreports lädst du die Subreport-Datei (*.jrxml bzw. *.xml) hoch und gibst einen Parameternamen an. Über diesen Namen wird der Subreport an den Hauptreport übergeben.
Subreport-Zuordnung mit Parametername.
Im Hauptreport einen Parameter mit dem oben vergebenen Namen und dem Typ net.sf.jasperreports.engine.JasperReport anlegen. In den Subreport‑Properties setzt du:
| Property | Wert |
|---|---|
| Subreport Expression | $P{<parametername>} (z.B. $P{SUBREPORT_A}) |
| Expression Class | net.sf.jasperreports.engine.JasperReport |
| Connection type | Use a datasource expression |
| Data Source Expression | siehe Codebeispiel unten |
Füge in den Subreport-Eigenschaften einen Parameter REPORT_DATA_SOURCE mit folgendem Ausdruck hinzu:
((org.nuclos.server.report.api.JRNuclosDataSource)$P{REPORT_DATA_SOURCE}).getDataSource("<Name der Datenquelle in Nuclos>")
Der Subreport muss im Detailbereich des übergeordneten Reports liegen, damit Verbindungs- und Kontextinformationen übergeben werden. Definierte Datenquellen-Parameter (z.B. intid) werden je Hauptdatensatz automatisch aus dessen Feldern gefüllt.
Testen im Designer
Zum Testkompilieren in Jaspersoft Studio muss nuclos-reportapi.jar (Teil der Distribution) zum Klassenpfad hinzugefügt werden.
Wird ein ganzes Formular als Subreport verwendet, gilt: (1) das ausführende Band auf Seitengröße maximieren, (2) das Subreport-Property Run to Bottom setzen. Besonders wichtig beim Last Page Footer.
Positions-Typ
Expansionsverhalten: Wird ein Subreport im Titel, Page/Column Header oder Group Header/Footer verwendet, muss das Property Positions-Typ = float gesetzt sein.
Wie man einen Sub-Sub-Report baut, steht unter Subreport im Subreport.