I tried to fill a report with Java.
My main report has some subreports with different levels.
When I try to show my report, I see only the first page, I don't know where I'm wrong:
Follow structure and Java code:
**Report structure**
Main report: rpt_accesso_storico.jrml
First level subreport: rpt_accesso_storico_sub.jrxml
Second level subreports (called by rpt_accesso_storico_sub.jrxml)
- rpt_generale_sub.jrxml
- rpt_sociale_sub.jrxml
- rpt_ginecologico_sub.jrxml
- rpt_ostetrico_sub.jrxml
- rpt_generale_sub.jrxml
Third level subreports: rpt_primocontatto_sub.jrxml (used in every second level report)
**The Java code**
*Step 1:*
In parameter hashmap I add all compiled subreports so in the .jrxml file I've added all subreports as Parameters as follow:
InputStream myIS = new ByteArrayInputStream(outByteArrayStream.toByteArray());
JasperDesign jasperDesign = JRXmlLoader.load(myIS);
JasperReport jr = JasperCompileManager.compileReport(jasperDesign);
if (entryName.equals("rpt_generale_sub.jrxml")) {
parameters.put("subreportGen", jr);
} else if (entryName.equals("rpt_ostetrico_sub.jrxml")) {
parameters.put("subreportOst", jr);
} else if (entryName.equals("rpt_infermieristico_sub.jrxml")) {
parameters.put("subreportInf", jr);
} else if (entryName.equals("rpt_sociale_sub.jrxml")) {
parameters.put("subreportSoc", jr);
} else if (entryName.equals("rpt_ginecologico_sub.jrxml")) {
parameters.put("subreportGin", jr);
} else if (entryName.equals("rpt_psicologico_sub.jrxml")) {
parameters.put("subreportPsi", jr);
} else if (entryName.equals("rpt_accesso_storico_sub.jrxml")) {
parameters.put("subreportA", jr);
} else if (entryName.equals("rpt_gen_primocontatto_sub.jrxml")) {
parameters.put("subGenPrimoContatto", jr);
}
Obviously that snippet is inside a for loop
*Step 2:*
I have a JasperDesign object as follow where inputStream is the main report file:
JasperDesign jasperDesign = JRXmlLoader.load(inputStream);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
Then I compile the jasperDesign in JasperReport object and finally I try to fill report with parameters where in that object I've all compiled subreports and the list of object to fill them.
But when I see the final result I've this:
[![Produced report][1]][1]
My report has only one page, and the other informations are cut.
After that, I add the parameters:
Map<String, Object> myParameters = getJasperParameterMapsForAccessoStorico(lstDatiRichiesta, listPrintData, idUtente, idEnteUtente, hmListeValori);
**In the pom I've used jasperreports 6.20.0**
JRXML snippet code about subreport
**In the main report:**
<subreport>
<reportElement positionType="Float" stretchType="ContainerHeight" x="20" y="6" width="550" height="40" uuid="d114b45a-18f1-41c2-96f6-92b4c507ebd5"/>
<subreportParameter name="subreportGen">
<subreportParameterExpression><![CDATA[$P{subreportGen}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="subreportSoc">
<subreportParameterExpression><![CDATA[$P{subreportSoc}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="subreportInf">
<subreportParameterExpression><![CDATA[$P{subreportInf}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="subreportGin">
<subreportParameterExpression><![CDATA[$P{subreportGin}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="subreportOst">
<subreportParameterExpression><![CDATA[$P{subreportOst}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="subreportPsi">
<subreportParameterExpression><![CDATA[$P{subreportPsi}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="subGenPrimoContatto">
<subreportParameterExpression><![CDATA[$P{subGenPrimoContatto}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{listaEventi})]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{subreportA}]]></subreportExpression>
</subreport>
**In the first level subreport:**
<groupHeader>
<band height="55">
<printWhenExpression><![CDATA[$F{idEventoClinico}=="EV_CLI_GEN"]]></printWhenExpression>
<staticText>
<reportElement x="0" y="0" width="130" height="20" uuid="0d05dbc4-3928-4d79-b633-e679eb7e9ea3"/>
<textElement>
<font fontName="SansSerif" size="14" isBold="true"/>
</textElement>
<text><![CDATA[Generale]]></text>
</staticText>
<subreport>
<reportElement positionType="Float" x="10" y="20" width="490" height="21" uuid="77df01e2-1477-4352-92ae-57c7a3ef56d1"/>
<subreportParameter name="subGenPrimoContatto">
<subreportParameterExpression><![CDATA[$P{subGenPrimoContatto}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{lstRichieste})]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{subreportGen}]]></subreportExpression>
</subreport>
</band>
<band height="50">
<printWhenExpression><![CDATA[$F{idEventoClinico}=="EV_CLI_SOC"]]></printWhenExpression>
<staticText>
<reportElement x="0" y="0" width="130" height="20" uuid="be5d447e-7098-4073-9aca-6b7f8b368543"/>
<textElement>
<font fontName="SansSerif" size="14" isBold="true"/>
</textElement>
<text><![CDATA[Sociale]]></text>
</staticText>
<subreport>
<reportElement positionType="Float" stretchType="ContainerHeight" x="10" y="20" width="490" height="21" uuid="d4f897e4-a38f-483d-aa56-de83baec648a"/>
<subreportParameter name="subGenPrimoContatto">
<subreportParameterExpression><![CDATA[$P{subGenPrimoContatto}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{lstRichieste})]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{subreportSoc}]]></subreportExpression>
</subreport>
</band>
<band height="50">
<printWhenExpression><![CDATA[$F{idEventoClinico}=="EV_CLI_INF"]]></printWhenExpression>
<staticText>
<reportElement x="0" y="0" width="130" height="20" uuid="66cca17d-f41a-4a53-9cdc-d1f47563ec70"/>
<textElement>
<font fontName="SansSerif" size="14" isBold="true"/>
</textElement>
<text><![CDATA[Infermieristico]]></text>
</staticText>
<subreport>
<reportElement positionType="Float" x="10" y="20" width="490" height="21" uuid="fed4f140-3f7c-49f0-8aca-9228559db184"/>
<subreportParameter name="subGenPrimoContatto">
<subreportParameterExpression><![CDATA[$P{subGenPrimoContatto}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{lstRichieste})]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{subreportInf}]]></subreportExpression>
</subreport>
</band>
<band height="50">
<printWhenExpression><![CDATA[$F{idEventoClinico}=="EV_CLI_OST"]]></printWhenExpression>
<staticText>
<reportElement x="0" y="0" width="130" height="20" uuid="90dee808-1605-42d8-bce3-aa0afaf8d4b5"/>
<textElement>
<font fontName="SansSerif" size="14" isBold="true"/>
</textElement>
<text><![CDATA[Ostetrico]]></text>
</staticText>
<subreport>
<reportElement positionType="Float" x="10" y="20" width="490" height="21" uuid="0fac5612-6938-477d-8f9b-c879349b7008"/>
<subreportParameter name="subGenPrimoContatto">
<subreportParameterExpression><![CDATA[$P{subGenPrimoContatto}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{lstRichieste})]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{subreportOst}]]></subreportExpression>
</subreport>
</band>
<band height="50">
<printWhenExpression><![CDATA[$F{idEventoClinico}=="EV_CLI_GIN"]]></printWhenExpression>
<staticText>
<reportElement x="0" y="0" width="130" height="20" uuid="df1c0abb-b7b6-4e5b-8525-83d5455f4fde"/>
<textElement>
<font fontName="SansSerif" size="14" isBold="true"/>
</textElement>
<text><![CDATA[Ginecologico]]></text>
</staticText>
<subreport>
<reportElement positionType="Float" x="10" y="20" width="490" height="21" uuid="d0118f35-1fbf-4a61-9a9b-90bc9c0c8821"/>
<subreportParameter name="subGenPrimoContatto">
<subreportParameterExpression><![CDATA[$P{subGenPrimoContatto}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{lstRichieste})]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{subreportGin}]]></subreportExpression>
</subreport>
</band>
<band height="50">
<printWhenExpression><![CDATA[$F{idEventoClinico}=="EV_CLI_PSI"]]></printWhenExpression>
<staticText>
<reportElement x="0" y="0" width="130" height="20" uuid="8a3a7a2f-8920-471f-97c3-4884a2429ff4"/>
<textElement>
<font fontName="SansSerif" size="14" isBold="true"/>
</textElement>
<text><![CDATA[Psicologico]]></text>
</staticText>
<subreport>
<reportElement positionType="Float" x="10" y="20" width="490" height="21" uuid="811c8cc4-8492-4b26-9680-27bff1b97abe"/>
<subreportParameter name="subGenPrimoContatto">
<subreportParameterExpression><![CDATA[$P{subGenPrimoContatto}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{lstRichieste})]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{subreportPsi}]]></subreportExpression>
</subreport>
</band>
</groupHeader>