Hallo,
ich habe einen MasterReport und 3SubReports erstellt. In den SubReports sollen z.B. Charts dargestellt werden.
Das alles funktioniert auch, wenn ich als DataSource eine Datenbankverbindung angebe. Der Report wird richtig gefüllt und auch alle SubReports angezeigt.
Jetzt möchte ich aber von meiner Anwendung heraus, nur bestimmte Datensätze anzeigen. Da ich innerhalb der Anwendung mit Hibernate arbeite, speicher ich die Datensätze in einer Collection und übergebe die dem Report als Parameter.
Innerhalb des MasterReports.jrxml definiere ich diesen Parameter als JRDataSource
und überreiche diesen Parameter als DataSource für den SubReport
Der Subreport soll mehrfach angezeigt werden. Wenn ich das dann compiliere und den MasterReport anzeige, werden alle SubReports angezeigt. Wenn ich jedoch einen zweiten SubReport einfüge, der ebenfalls einen JRDataSource als MainReport-Parameter erhält, dann wird nur ein einziger SubReport angezeigt und das auch nur das erste mal... wenn der gleiche Report nochmal dargestellt werden soll (weil die Gruppe nochmal gedruckt wird), wird er nicht angezeigt.
Ich habe keine Ahnung, woran das liegt, vllt kann mir jemand weiterhelfen?
(wenn ich das Problem verdeutlichen konnte... ansonsten beantworte ich gerne Gegenfragen)
Gruß
verzweifelte
kalubest
ich habe einen MasterReport und 3SubReports erstellt. In den SubReports sollen z.B. Charts dargestellt werden.
Das alles funktioniert auch, wenn ich als DataSource eine Datenbankverbindung angebe. Der Report wird richtig gefüllt und auch alle SubReports angezeigt.
Jetzt möchte ich aber von meiner Anwendung heraus, nur bestimmte Datensätze anzeigen. Da ich innerhalb der Anwendung mit Hibernate arbeite, speicher ich die Datensätze in einer Collection und übergebe die dem Report als Parameter.
Code:
// alle ausgewählten Datensätze
Collection subReportsRowsSampleParams = ReportData.getInstance().getSampleParams();
JRDataSource subReportDataSource = new JRBeanCollectionDataSource(subReportsRowsSampleParams);
// zur Parameter-Map für den MasterReport hinzufügen
Map params = new HashMap();
params.put("SampleParamsData", subReportDataSource);
Innerhalb des MasterReports.jrxml definiere ich diesen Parameter als JRDataSource
und überreiche diesen Parameter als DataSource für den SubReport
Code:
<parameter name="SampleParamsData" isForPrompting="false" class="net.sf.jasperreports.engine.JRDataSource"/>
...
<subreport isUsingCache="true">
<reportElement
x="0"
y="24"
width="36"
height="33"
key="subreport-2"
positionType="Float"
isPrintRepeatedValues="false"
isRemoveLineWhenBlank="true"
isPrintWhenDetailOverflows="true"/>
<subreportParameter name="SampleID">
<subreportParameterExpression><![CDATA[$F{ID}]]>
</subreportParameterExpression>
</subreportParameter>
<dataSourceExpression>
<![CDATA[$P{SampleParamsData}]]>
</dataSourceExpression>
<subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "\\report\\SampleMainReport_subreportSampleParamBarChart.jasper"]]></subreportExpression>
</subreport>
Der Subreport soll mehrfach angezeigt werden. Wenn ich das dann compiliere und den MasterReport anzeige, werden alle SubReports angezeigt. Wenn ich jedoch einen zweiten SubReport einfüge, der ebenfalls einen JRDataSource als MainReport-Parameter erhält, dann wird nur ein einziger SubReport angezeigt und das auch nur das erste mal... wenn der gleiche Report nochmal dargestellt werden soll (weil die Gruppe nochmal gedruckt wird), wird er nicht angezeigt.
Ich habe keine Ahnung, woran das liegt, vllt kann mir jemand weiterhelfen?
(wenn ich das Problem verdeutlichen konnte... ansonsten beantworte ich gerne Gegenfragen)
Gruß
verzweifelte
kalubest
Zuletzt bearbeitet: