jasper-reports duplicates subreport

jasper reports - JasperReports: Subreport se renderiza varias veces, causando páginas duplicadas



jasper-reports duplicates (1)

Se imprime una banda de detalles por registro en su conjunto de datos. Entonces, si la consulta de su base de datos devuelve 12 filas, obtendrá 12 copias de la banda de detalles. Cada banda usa datos de una sola fila, pero esto no tiene importancia para usted ya que está usando un gráfico y un subinforme para mostrar los datos.

Para evitar esta repetición, simplemente coloque su tabla y subinforme en una banda diferente. Me decantaría por el encabezado o el pie de página de la columna, pero cualquier cosa, excepto los detalles, funcionará.

Estoy usando JasperReports para generar un gráfico y una tabla para una aplicación web usando dos consultas separadas. Mi JRXML principal genera el gráfico, e incluyo un subinforme en la banda Detalle para generar la tabla. Sin embargo, cuando se procesa, el subinforme parece renderizarse varias veces (12 para ser exactos), lo que da como resultado que el informe generado sea el mismo gráfico y tabla en 12 páginas (duplicados exactos entre sí). Esto sucede tanto a través de la aplicación en línea como de iReport .

Mi principal JRXML , subinforme JRXML y el código de generación de informes están debajo (algunos detalles han sido eliminados por razones de NDA).

Cualquier idea o idea sobre cuál es el problema sería muy útil.

JRXML principal:

<?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="report" language="groovy" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> <property name="ireport.zoom" value="1.0"/> <property name="ireport.x" value="0"/> <property name="ireport.y" value="0"/> <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> <defaultValueExpression><![CDATA["<<PATH_TO_SUBREPORT>>"]]></defaultValueExpression> </parameter> <parameter name="param" class="java.util.Collection" /> <queryString language="SQL"> <![CDATA[<<DATABASE_QUERY>>]]> </queryString> <field name="FIELD1" class="java.lang.Integer"/> <field name="FIELD2" class="java.sql.Date"/> <field name="FIELD3" class="java.math.BigDecimal"/> <field name="FIELD4" class="java.math.BigDecimal"/> <field name="FIELD5" class="java.math.BigDecimal"/> <background> <band splitType="Stretch"/> </background> <title> <band height="10" splitType="Stretch"/> </title> <pageHeader> <band height="5" splitType="Stretch"/> </pageHeader> <columnHeader> <band height="5" splitType="Stretch"/> </columnHeader> <detail> <band height="513" splitType="Stretch"> <lineChart> <chart> <reportElement positionType="Float" x="51" y="0" width="680" height="400"/> <chartTitle/> <chartSubtitle/> <chartLegend/> </chart> <categoryDataset> <categorySeries> <seriesExpression><![CDATA["FIELD1"]]></seriesExpression> <categoryExpression><![CDATA[$F{f1}]]></categoryExpression> <valueExpression><![CDATA[$F{f2}]]></valueExpression> </categorySeries> <categorySeries> <seriesExpression><![CDATA["FIELD2"]]></seriesExpression> <categoryExpression><![CDATA[$F{f1}]]></categoryExpression> <valueExpression><![CDATA[$F{f2}]]></valueExpression> </categorySeries> <categorySeries> <seriesExpression><![CDATA["FIELD3"]]></seriesExpression> <categoryExpression><![CDATA[$F{f1}]]></categoryExpression> <valueExpression><![CDATA[$F{f2}]]></valueExpression> </categorySeries> </categoryDataset> <linePlot> <plot labelRotation="-90.0"/> <categoryAxisFormat labelRotation="-90.0"> <axisFormat> <tickLabelFont> <font size="12"/> </tickLabelFont> </axisFormat> </categoryAxisFormat> <rangeAxisMinValueExpression><![CDATA[0]]></rangeAxisMinValueExpression> <rangeAxisMaxValueExpression><![CDATA[101]]></rangeAxisMaxValueExpression> </linePlot> </lineChart> <subreport> <reportElement x="377" y="413" width="425" height="100"/> <subreportParameter name="param"> <subreportParameterExpression><![CDATA[$P{param}]]></subreportParameterExpression> </subreportParameter> <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "testReport.jasper"]]></subreportExpression> </subreport> </band> </detail> <columnFooter> <band height="5" splitType="Stretch"/> </columnFooter> <pageFooter> <band height="15" splitType="Stretch"> <textField> <reportElement mode="Opaque" x="3" y="2" width="759" height="13" backcolor="#E6E6E6"/> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression> </textField> <textField evaluationTime="Report"> <reportElement mode="Opaque" x="762" y="2" width="40" height="13" backcolor="#E6E6E6"/> <textElement/> <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression> </textField> <textField pattern="EEEEE dd MMMMM yyyy"> <reportElement x="3" y="0" width="100" height="13"/> <textElement/> <textFieldExpression><![CDATA[new SimpleDateFormat("MM-dd-yyyy").format( new java.util.Date())]]></textFieldExpression> </textField> </band> </pageFooter> <summary> <band height="10" splitType="Stretch"/> </summary> </jasperReport>

Informe secundario JRXML :

<?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="evcas_sub" language="groovy" pageWidth="450" pageHeight="150" columnWidth="10" leftMargin="10" rightMargin="10" topMargin="10" bottomMargin="10"> <property name="ireport.zoom" value="1.0"/> <property name="ireport.x" value="0"/> <property name="ireport.y" value="0"/> <style name="table"> <box> <pen lineWidth="1.0" lineColor="#000000"/> </box> </style> <style name="table_TH" mode="Opaque" backcolor="#0000FF"> <box> <pen lineWidth="0.5" lineColor="#000000"/> </box> </style> <style name="table_CH" mode="Opaque" backcolor="#BFBFFF"> <box> <pen lineWidth="0.5" lineColor="#000000"/> </box> </style> <style name="table_TD" mode="Opaque" backcolor="#FFFFFF"> <box> <pen lineWidth="0.5" lineColor="#000000"/> </box> <conditionalStyle> <conditionExpression><![CDATA[new Boolean($V{REPORT_COUNT}.intValue()%2==0)]]></conditionExpression> <style backcolor="#EFEFFF"/> </conditionalStyle> </style> <style name="Crosstab Data Text" hAlign="Center"/> <parameter name="param" class="java.util.Collection" /> <queryString> <![CDATA[<<DATABASE_QUERY>>]]> </queryString> <field name="FIELD1" class="java.lang.String"/> <field name="FIELD2" class="java.math.BigDecimal"/> <field name="FIELD3" class="java.math.BigDecimal"/> <field name="FIELD4" class="java.math.BigDecimal"/> <field name="FIELD5" class="java.math.BigDecimal"/> <field name="FIELD6" class="java.math.BigDecimal"/> <field name="FIELD7" class="java.math.BigDecimal"/> <field name="FIELD8" class="java.math.BigDecimal"/> <background> <band splitType="Stretch"/> </background> <title> <band height="5" splitType="Stretch"/> </title> <pageHeader> <band height="5"/> </pageHeader> <columnHeader> <band height="12"> <textField> <reportElement style="table_TH" x="0" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="9"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA["FIELD1"]]></textFieldExpression> </textField> <textField> <reportElement style="table_TH" x="50" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="9"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA["FIELD2"]]></textFieldExpression> </textField> <textField> <reportElement style="table_TH" x="100" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="9"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA["FIELD3"]]></textFieldExpression> </textField> <textField> <reportElement style="table_TH" x="150" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="9"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA["FIELD4"]]></textFieldExpression> </textField> <textField> <reportElement style="table_TH" x="200" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="9"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA["FIELD5"]]></textFieldExpression> </textField> <textField> <reportElement style="table_TH" x="250" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="9"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA["FIELD6"]]></textFieldExpression> </textField> <textField> <reportElement style="table_TH" x="300" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="9"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA["FIELD7"]]></textFieldExpression> </textField> <textField> <reportElement style="table_TH" x="350" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="9"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA["FIELD8"]]></textFieldExpression> </textField> </band> </columnHeader> <detail> <band height="12"> <textField> <reportElement style="table_CH" x="0" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="8"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA[$F{f1}]]></textFieldExpression> </textField> <textField> <reportElement style="table_CH" x="50" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="8"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA[$F{f2}]]></textFieldExpression> </textField> <textField> <reportElement style="table_CH" x="100" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="8"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA[$F{f3}]]></textFieldExpression> </textField> <textField> <reportElement style="table_CH" x="150" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="8"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA[$F{f4}]]></textFieldExpression> </textField> <textField> <reportElement style="table_CH" x="200" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="8"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA[$F{f5}]]></textFieldExpression> </textField> <textField> <reportElement style="table_CH" x="250" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="8"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA[$F{f6}]]></textFieldExpression> </textField> <textField> <reportElement style="table_CH" x="300" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="8"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA[$F{f7}]]></textFieldExpression> </textField> <textField> <reportElement style="table_CH" x="350" y="0" width="50" height="12" backcolor="#FFFFFF"/> <textElement> <font size="8"/> <paragraph leftIndent="2"/> </textElement> <textFieldExpression><![CDATA[$F{f8}]]></textFieldExpression> </textField> </band> </detail> <columnFooter> <band height="5" splitType="Stretch"/> </columnFooter> <pageFooter> <band height="5" splitType="Stretch"/> </pageFooter> </jasperReport>

Código de representación:

String strFileName = "<<FILENAME>>"; File jrxml = new File(strFileName); InputStream iStream = new FileInputStream(jrxml); JasperReport objJReport = JasperCompileManager.compileReport(iStream); JasperPrint objJPrint = JasperFillManager.fillReport(objJReport, hashMap, datasource.getConnection()); JasperExportManager.exportReportToPdfStream(objJPrint, os);