un rapport avec 2 sous rapport en boucle infini
Bonjour, décidemment j'ai des problèmes avec les sous-rapport
Voici un rapport avec 2 sous-rapport, les 2 sous rapport étant dans un groupe
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="crf" pageWidth="595" pageHeight="842" columnWidth="595" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="SIMPLE_DATA" class="java.util.HashMap">
</parameter>
<field name="subreport2" class="java.util.HashMap"/>
<field name="subReportName" class="java.lang.String"/>
<field name="subReportDataSource" class="net.sf.jasperreports.engine.data.JRMapCollectionDataSource"/>
<field name="subReportJasperReport" class="net.sf.jasperreports.engine.JasperReport"/>
<group name="Group1" >
<groupExpression><![CDATA[$F{subReportName}]]></groupExpression>
<groupHeader>
<band height="792">
<subreport>
<reportElement positionType="Float" x="0" y="0" width="555" height="792"/>
<subreportParameter name="subReportName">
<subreportParameterExpression><![CDATA[$F{subReportName}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[$F{subReportDataSource}]]></dataSourceExpression>
<subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$F{subReportJasperReport}]]></subreportExpression>
</subreport>
<subreport>
<reportElement positionType="Float" x="0" y="0" width="595" height="792"/>
<subreportParameter name="subReportName">
<subreportParameterExpression><![CDATA[$F{subReportName}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[$F{subreport2}.get("subReportDataSource")]]></dataSourceExpression>
<subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$F{subreport2}.get("subReportJasperReport")]]></subreportExpression>
</subreport>
</band>
</groupHeader>
</group> <background>
<band splitType="Stretch"/>
</background>
<title>
<band height="0" splitType="Stretch"/>
</title>
<columnHeader>
<band height="0" splitType="Stretch"/>
</columnHeader>
<detail>
</detail>
<columnFooter>
<band height="0" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="30" splitType="Stretch">
<frame>
<reportElement mode="Opaque" x="2" y="0" width="553" height="30" forecolor="#D0B48E" backcolor="#F2EBDF"/>
<textField>
<reportElement x="224" y="3" width="39" height="20"/>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}+"/"]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="264" y="3" width="40" height="20"/>
<textElement/>
<textFieldExpression><![CDATA["" + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
</frame>
</band>
</pageFooter> <summary>
<band height="0" splitType="Stretch"/>
</summary>
</jasperReport> |
Quand je rempli le rapport de la manière suivante
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
Map simpleMasterMap = new HashMap();
Map subreport2 = new HashMap();
subreport2.put("subReportJasperReport", subReportQueryJasperReportList.get(1));
subreport2.put("subReportDataSource", subReportQueryDataSourceList.get(1));
simpleMasterMap.put("subReportName", subReportName.get(1));
simpleMasterMap.put("subReportJasperReport", subReportJasperReport.get(1));
simpleMasterMap.put("subReportDataSource", subReportDataSource.get(1));
simpleMasterMap.put("subreport2", subreport2);
simpleMasterList.add(simpleMasterMap);
JRDataSource simpleDS = new JRMapCollectionDataSource(simpleMasterList);
HashMap SIMPLE_DATA = new HashMap();
params.put("SIMPLE_DATA", SIMPLE_DATA);
JasperPrint jasperPrint = null;
InputStream jrxmlInputStream = new ByteArrayInputStream(jrxml.toString().getBytes());
if (simpleDS == null)
simpleDS = new JREmptyDataSource(1);
try {
JasperDesign jasperDesign = JRXmlLoader.load(jrxmlInputStream);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
jasperPrint = JasperFillManager.fillReport(jasperReport, params, simpleDS); |
il tourne de manière infini avec les output suivant
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
2012-05-20 10:16:27 JRVerticalFiller [DEBUG] Fill 2: page header
2012-05-20 10:16:27 JRVerticalFiller [DEBUG] Fill 2: page header
2012-05-20 10:16:27 JRBaseFiller [DEBUG] Fill 2: suspeding subreport runner
2012-05-20 10:16:27 JRBaseFiller [DEBUG] Fill 2: suspeding subreport runner
2012-05-20 10:16:27 JRThreadSubreportRunner [DEBUG] Fill 2: notifying on suspend
2012-05-20 10:16:27 JRThreadSubreportRunner [DEBUG] Fill 2: notifying on suspend
2012-05-20 10:16:27 JRThreadSubreportRunner [DEBUG] Fill 2: waiting to continue
2012-05-20 10:16:27 JRThreadSubreportRunner [DEBUG] Fill 2: waiting to continue
2012-05-20 10:16:27 JRThreadSubreportRunner [DEBUG] Fill 2: notified of fill result
2012-05-20 10:16:27 JRThreadSubreportRunner [DEBUG] Fill 2: notified of fill result
2012-05-20 10:16:27 JRFillSubreport [DEBUG] Fill 1: subreport 2 to continue
2012-05-20 10:16:27 JRFillSubreport [DEBUG] Fill 1: subreport 2 to continue
2012-05-20 10:16:27 JRVerticalFiller [DEBUG] Fill 1: page footer
2012-05-20 10:16:27 JRVerticalFiller [DEBUG] Fill 1: page footer
2012-05-20 10:16:27 JRBaseFiller [DEBUG] Adding evaluation of net.sf.jasperreports.engine.fill.JRTemplatePrintText@4b939fbd by net.sf.jasperreports.engine.fill.JRFillTextField@49b9b979 for evaluation {type: REPORT, group: null, band: 0}
2012-05-20 10:16:27 JRBaseFiller [DEBUG] Adding evaluation of net.sf.jasperreports.engine.fill.JRTemplatePrintText@4b939fbd by net.sf.jasperreports.engine.fill.JRFillTextField@49b9b979 for evaluation {type: REPORT, group: null, band: 0}
2012-05-20 10:16:27 JRBaseFiller [DEBUG] Fill 1: adding page 5394
2012-05-20 10:16:27 JRBaseFiller [DEBUG] Fill 1: adding page 5394
2012-05-20 10:16:27 JRFillSubreport [DEBUG] Fill 1: resuming 2
2012-05-20 10:16:27 JRFillSubreport [DEBUG] Fill 1: resuming 2
2012-05-20 10:16:27 JRThreadSubreportRunner [DEBUG] Fill 2: notifying to continue
2012-05-20 10:16:27 JRThreadSubreportRunner [DEBUG] Fill 2: notifying to continue
2012-05-20 10:16:27 JRThreadSubreportRunner [DEBUG] Fill 2: waiting for fill result
2012-05-20 10:16:27 JRThreadSubreportRunner [DEBUG] Fill 2: waiting for fill result
2012-05-20 10:16:27 JRThreadSubreportRunner [DEBUG] Fill 2: notified to continue
2012-05-20 10:16:27 JRThreadSubreportRunner [DEBUG] Fill 2: notified to continue |
Merci d'avance pour vos réponses