JasperReports: Unterschied zwischen den Versionen

Aus Wiki - Jochen Hammann
Zur Navigation springen Zur Suche springen
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
__TOC__
== Verwenden einer Java Beans Collection Data Source in Subreports ==
== Verwenden einer Java Beans Collection Data Source in Subreports ==


Zeile 5: Zeile 8:


== Verwenden einer XML Data Source in Subreports ==
== Verwenden einer XML Data Source in Subreports ==


Zur Übergabe einer XML Data Source in einen Subreport können wahlweise folgende Expressions spezifiziert werden.
Zur Übergabe einer XML Data Source in einen Subreport können wahlweise folgende Expressions spezifiziert werden.
Zeile 19: Zeile 23:
Die JavaDoc API Beschreibung sagt folgendes dazu:
Die JavaDoc API Beschreibung sagt folgendes dazu:
:: ''To support subreports, sub data sources can be created. There are two different methods for creating sub data sources. The first one [subDataSource()] allows to create a sub data source rooted at the current node. The current node can be seen as a new document around which the sub data source is created. The second method [dataSource()] allows to create a sub data source that is rooted at the same document that is used by the data source but uses a different XPath select expression.''
:: ''To support subreports, sub data sources can be created. There are two different methods for creating sub data sources. The first one [subDataSource()] allows to create a sub data source rooted at the current node. The current node can be seen as a new document around which the sub data source is created. The second method [dataSource()] allows to create a sub data source that is rooted at the same document that is used by the data source but uses a different XPath select expression.''


Beispiel:
Beispiel:
Zeile 36: Zeile 41:
</reportSchedule>
</reportSchedule>
</syntaxhighlight>
</syntaxhighlight>


Der entsprechende Subreport ist mit folgender Datenquelle verknüpft:
Der entsprechende Subreport ist mit folgender Datenquelle verknüpft:
Zeile 42: Zeile 48:
((net.sf.jasperreports.engine.data.JRXmlDataSource) $P{REPORT_DATA_SOURCE}).subDataSource("/reportSchedule/reports/report[1]/widget[1]")
((net.sf.jasperreports.engine.data.JRXmlDataSource) $P{REPORT_DATA_SOURCE}).subDataSource("/reportSchedule/reports/report[1]/widget[1]")
</syntaxhighlight>
</syntaxhighlight>


D.h. innerhalb des entsprechenden Subreports gilt folgender XPath:
D.h. innerhalb des entsprechenden Subreports gilt folgender XPath:
Zeile 48: Zeile 55:
/reportSchedule/reports/report[1]/widget[1]
/reportSchedule/reports/report[1]/widget[1]
</syntaxhighlight>
</syntaxhighlight>


Enthält der Subreport eine Tabelle oder einen weiteren Subreport, so muss diesem z.B. zur Darstellung aller Items folgende Sub Data Source übergeben werden:
Enthält der Subreport eine Tabelle oder einen weiteren Subreport, so muss diesem z.B. zur Darstellung aller Items folgende Sub Data Source übergeben werden:

Aktuelle Version vom 28. September 2016, 21:39 Uhr


Verwenden einer Java Beans Collection Data Source in Subreports

Siehe Artikel Simple Guide To Sub-reports in JasperReports / iReport.


Verwenden einer XML Data Source in Subreports

Zur Übergabe einer XML Data Source in einen Subreport können wahlweise folgende Expressions spezifiziert werden.

((net.sf.jasperreports.engine.data.JRXmlDataSource) $P{REPORT_DATA_SOURCE}).subDataSource("/reportSchedule")
((net.sf.jasperreports.engine.data.JRXmlDataSource) $P{REPORT_DATA_SOURCE}).dataSource("/reportSchedule")
new net.sf.jasperreports.engine.data.JRXmlDataSource("C:/Users/Jochen/JaspersoftWorkspace/STReportBookTemplate/Report.xml", "/reportSchedule")


JRXmlDataSource - subDataSource() vs. dataSource()

Die JavaDoc API Beschreibung sagt folgendes dazu:

To support subreports, sub data sources can be created. There are two different methods for creating sub data sources. The first one [subDataSource()] allows to create a sub data source rooted at the current node. The current node can be seen as a new document around which the sub data source is created. The second method [dataSource()] allows to create a sub data source that is rooted at the same document that is used by the data source but uses a different XPath select expression.


Beispiel:

<reportSchedule>
	<reports>
		<report title="Title" subtitle="Subtitle">
			<widget title="Title">
				<data>
					<item checkpoint="Checkpoint01" location="Location"/>
					<item checkpoint="Checkpoint02" location="Location"/>
					<item checkpoint="Checkpoint03" location="Location"/>
				</data>
			</widget>
		</report>
	</reports>
</reportSchedule>


Der entsprechende Subreport ist mit folgender Datenquelle verknüpft:

((net.sf.jasperreports.engine.data.JRXmlDataSource) $P{REPORT_DATA_SOURCE}).subDataSource("/reportSchedule/reports/report[1]/widget[1]")


D.h. innerhalb des entsprechenden Subreports gilt folgender XPath:

/reportSchedule/reports/report[1]/widget[1]


Enthält der Subreport eine Tabelle oder einen weiteren Subreport, so muss diesem z.B. zur Darstellung aller Items folgende Sub Data Source übergeben werden:

((net.sf.jasperreports.engine.data.JRXmlDataSource) $P{REPORT_DATA_SOURCE}).subDataSource("widget/data/item")

oder

((net.sf.jasperreports.engine.data.JRXmlDataSource) $P{REPORT_DATA_SOURCE}).dataSource("/reportSchedule/reports/report[1]/widget[1]/data/item")