当前位置: 首页 > 知识库问答 >
问题:

另一个子报表中的子报表只打印对象列表的第一项

洪伟彦
2023-03-14

我正在尝试使用带有子报表的主报表,而这个也带有子报表。我有一个Object列表,我将其作为JAVA的参数传递。当我打印Jasper时,只打印列表中的第一项,我不知道为什么(如果我只使用Master和一个子报表,它将打印所有对象并正确显示所有数据)。

代码是:JAVA(最相关的部分)

Map<String, Object> parametrosTomaMuestra = new HashMap<>();
List<ObjectA> muestras = tomaMuestras.getMuestras();
List<JasperPrint> printList = new ArrayList<JasperPrint>();
parametrosTomaMuestra.put("subReportTomaMuestra", pathReport);
parametrosTomaMuestra.put("muestras", new JRBeanCollectionDataSource(muestras));
try {
    JasperReport apdoTomaMuestras = (JasperReport) JRLoader.loadObjectFromFile(pathReport + "/apdoTomaMuestras.jasper");
    printList.add(JasperFillManager.fillReport(apdoTomaMuestras, parametrosTomaMuestra, new JREmptyDataSource()));
} catch (JRException e) {
    e.printStackTrace();
}

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="apdoTomaMuestras" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="13a4a96f-ef00-4573-b951-f01c73cb0d60">
    <parameter name="muestras" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <parameter name="subReportTomaMuestra" class="java.lang.String"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <detail>
        <band height="258" splitType="Stretch">
            <subreport>
                <reportElement x="20" y="30" width="505" height="228" uuid="eb89d398-4435-49ad-a886-9f1a3ad76e79"/>
                <subreportParameter name="subReportTomaMuestra">
                    <subreportParameterExpression><![CDATA[$P{subReportTomaMuestra}]]></subreportParameterExpression>
                </subreportParameter>
                <dataSourceExpression><![CDATA[$P{muestras}]]></dataSourceExpression>
                <subreportExpression><![CDATA[$P{subReportTomaMuestra} + "tomaMuestra.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </detail>
</jasperReport>

子报告

<?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="tomaMuestra3" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="70bd6c22-e031-45e8-9ba6-d46b8f4bb20f">
    <parameter name="subReportTomaMuestra" class="java.lang.String"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="codigo" class="java.lang.String"/>
    <detail>
        <band height="446" splitType="Stretch">
            <staticText>
                <reportElement x="3" y="130" width="68" height="20" uuid="e9d20cf5-abd3-4b2a-bd13-5bb2eee4957f"/>
                <textElement>
                    <font fontName="Noto Sans HK Black" isBold="true"/>
                </textElement>
                <text><![CDATA[Origen:]]></text>
            </staticText>
            <textField>
                <reportElement x="70" y="130" width="100" height="20" uuid="aa8869c6-af16-4376-930b-387a88c9bc62"/>
                <textFieldExpression><![CDATA[$F{origen}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="110" y="100" width="100" height="16" uuid="1682066d-193c-4df6-b0fd-305ccd9676f2"/>
                <textFieldExpression><![CDATA[$F{codigo}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="2" y="100" width="108" height="16" forecolor="#092382" uuid="519eb0f2-e970-4b94-925b-91d5f0aa21d4"/>
                <textElement textAlignment="Left">
                    <font fontName="Noto Sans HK Black" size="11"/>
                </textElement>
                <text><![CDATA[Toma de muestra:]]></text>
            </staticText>
            <subreport>
                <reportElement x="2" y="272" width="550" height="174" uuid="ccbbe4cf-52e6-4551-98b1-c3f397f21b65"/>
                <subreportParameter name="subReportMuestraOrigenA">
                    <subreportParameterExpression><![CDATA[$P{subReportTomaMuestra}]]></subreportParameterExpression>
                </subreportParameter>
                <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
                <subreportExpression><![CDATA[$P{subReportTomaMuestra} + "muestraOrigenA.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </detail>
</jasperReport>

子子报表

<?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="muestraOrigenA" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" whenResourceMissingType="Error" uuid="aa7ff2e8-0339-46e8-afde-9b1d5f79c82d">
    <parameter name="muestras" class="es.sigma.imina.modelo.tomamuestras.Muestra"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="afeccionesDescFoco" class="java.lang.String"/>
    <field name="afeccionesOrigenAguasSup" class="java.lang.String"/>
    <field name="afeccionesOrigen" class="java.lang.String"/>
    <field name="ph" class="java.lang.Integer"/>
    <field name="conductividadElectrica" class="java.lang.Float"/>
    <detail>
        <band height="446" splitType="Stretch">
            <staticText>
                <reportElement x="0" y="23" width="155" height="20" uuid="28affa9e-e432-4752-82bc-4839d90a914c"/>
                <textElement>
                    <font fontName="Noto Sans HK Black" isBold="true"/>
                </textElement>
                <text><![CDATA[Origen de aguas superficiales:]]></text>
            </staticText>
            <staticText>
                <reportElement x="280" y="23" width="44" height="20" uuid="5f8d6af0-fae0-4801-8f36-555da13637fb"/>
                <textElement>
                    <font fontName="Noto Sans HK Black" isBold="true"/>
                </textElement>
                <text><![CDATA[Origen:]]></text>
            </staticText>
            <staticText>
                <reportElement x="0" y="43" width="155" height="20" uuid="745ca6b1-c1f7-41bd-b1c8-d8eb1b9e7a66"/>
                <textElement>
                    <font fontName="Noto Sans HK Black" isBold="true"/>
                </textElement>
                <text><![CDATA[Descripción del foco:]]></text>
            </staticText>
            <staticText>
                <reportElement x="0" y="113" width="251" height="20" forecolor="#092382" uuid="ee62758c-d8be-464b-8b2f-23397b2611f3"/>
                <textElement>
                    <font fontName="Noto Sans HK Black" size="11"/>
                </textElement>
                <text><![CDATA[En campo (mediante sondas)]]></text>
            </staticText>
            <staticText>
                <reportElement x="280" y="173" width="130" height="20" uuid="b34814e6-17bb-4a44-921e-b896e5a4ec8a"/>
                <textElement>
                    <font fontName="Noto Sans HK Black" isBold="true"/>
                </textElement>
                <text><![CDATA[Conductividad eléctrica:]]></text>
            </staticText>
            <staticText>
                <reportElement x="0" y="143" width="251" height="20" forecolor="#092382" uuid="af2f22f5-2b31-46ef-92d6-82a1b53bef0d"/>
                <textElement>
                    <font fontName="Noto Sans HK Black" size="11"/>
                </textElement>
                <text><![CDATA[En laboratorio]]></text>
            </staticText>
            <textField>
                <reportElement x="27" y="173" width="103" height="18" uuid="068d1149-53e9-4490-8502-5d8a4f83ecb3"/>
                <textFieldExpression><![CDATA[$F{ph}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="324" y="23" width="126" height="20" uuid="f812038f-0b6c-49c2-86be-0ebb72cf5197"/>
                <textFieldExpression><![CDATA[$F{afeccionesOrigen}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="0" y="63" width="550" height="40" uuid="b9cc8d83-8ec1-40bf-9029-e17998768fad"/>
                <textFieldExpression><![CDATA[$F{afeccionesDescFoco}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="410" y="173" width="100" height="20" uuid="4c30bbb1-9d66-4673-86ad-5765d8c6cc3c"/>
                <textFieldExpression><![CDATA[$F{conductividadElectrica}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="155" y="23" width="125" height="20" uuid="b2a52619-5ac6-4884-b0fa-88f772cf68d3"/>
                <textFieldExpression><![CDATA[$F{afeccionesOrigenAguasSup}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="0" y="173" width="25" height="20" uuid="db0290ba-f224-4a9e-8a3e-1c87e611324b"/>
                <textElement>
                    <font fontName="Noto Sans HK Black" isBold="true"/>
                </textElement>
                <text><![CDATA[PH:]]></text>
            </staticText>
        </band>
    </detail>
</jasperReport>

请忽略jrxml的简单设计,我只是删除了不相关的信息。知道吗?

共有1个答案

路思源
2023-03-14

在您的“子报告”中,这是不正确的:

<dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>

由于从未设置$P{REPORT_DATA_SOURCE},因此“SUB SUBREPORT”没有数据源

 类似资料:
  • 是否有任何缓存或某种设置在jasper或类似的东西?

  • 在主报表的细节部分,我创建了两个非常相同的子报表。我在主报表上指定了这两个子报表的高度为300像素,因此它们占据相等的空间,并在设计中一个接一个地显示为两个框。 子报表的设计如下所示。它的高度保持在300px。详细信息带根据从数据库返回的行数进行迭代。这可能返回3到8行。 现在,我希望在预览子报表时,如下图所示逐个显示子报表,其间没有任何空白。现在,当第一行只返回3行时,我看到它们之间有空白。如何

  • 我的主报告中有一个子报告。这在细节栏中。问题是它只针对主报告的第一条记录运行。我希望它能为所有细节乐队的唱片播放。它不会显示在其他页面上。为了运行它,我传递了一个sql查询参数,该参数为详细信息带提供信息。 这是jrxml的主报告: 子报表 jrxml:

  • 我试图在一个Jasper报告中显示多个表,我使用子报告来实现这个功能。但我一直在显示几个子报告。实际上,只显示其中一个(第一个)。 以下是我的主report.jrxml: 下面是subjectSubreport.jrxml: 这是printersSubreport.jrxml: 当我切换子报告时,第一个报告正确显示,另一个报告消失。在JasperSoft Studio中,一切都很好,当我将它们导出

  • 我目前的技能只能通过使用JRBeanCollectionDataSource(list)作为数据源,在不使用子报表的情况下制作pdf。(数据打印成功) 谁能告诉我如何制作包含多个子报表的pdf报表,主jrxml文件和子报表jrxml文件中应该包含哪些内容,以及java代码中应该包含哪些内容?以及如何使用多个JRBeanCollectionDataSource(列表)?我唯一知道的是使用Map pa

  • 问题内容: 我想用另一个子列表替换list中的一个子列表。像这样: 可以说我想要一个像这样的子列表: 并替换为 所以最终结果将是 有什么建议? 问题答案: 希望能有所帮助