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

为什么只显示我的第一个子报表?

支铭晨
2023-03-14

我试图在一个Jasper报告中显示多个表,我使用子报告来实现这个功能。但我一直在显示几个子报告。实际上,只显示其中一个(第一个)。

以下是我的主report.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="multitable" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="1c6dc1c9-67af-43d5-bf1e-9243557c8048">
<property name="net.sf.jasperreports.json.source" value="C:/jdd/projects/StackTrace/jasper/multitable.json"/>
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA["reports/hardware/"]]></defaultValueExpression></parameter>
<parameter name="title" class="java.lang.String"/>
<parameter name="period" class="java.lang.String"/>
<parameter name="DS1" class="net.sf.jasperreports.engine.data.JsonDataSource"/>
<parameter name="DS2" class="net.sf.jasperreports.engine.data.JsonDataSource"/>
<queryString language="json">
    <![CDATA[]]>
</queryString>
<detail>
    <band height="120" splitType="Stretch">
        <textField>
            <reportElement x="0" y="0" width="100" height="50" uuid="91249d6e-57f7-4b6d-8d2a-05059efa2a47"/>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font size="16"/>
            </textElement>
            <textFieldExpression><![CDATA[$P{title}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="652" y="0" width="100" height="50" uuid="67e1ca07-588a-4b2b-ae93-ecbdb544b01b"/>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font size="16"/>
            </textElement>
            <textFieldExpression><![CDATA[$P{period}]]></textFieldExpression>
        </textField>
        <subreport>
            <reportElement x="0" y="50" width="555" height="20" uuid="48a7bbe4-b8ce-4a0d-a6e1-6ddd288e5602"/>
            <dataSourceExpression><![CDATA[$P{DS1}]]></dataSourceExpression>
            <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "printersSubreport.jasper"]]></subreportExpression>
        </subreport>
    </band>
</detail>
<summary>
    <band height="305" splitType="Stretch">
        <textField>
            <reportElement x="0" y="0" width="100" height="50" uuid="91249d6e-57f7-4b6d-8d2a-05059efa2a47"/>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font size="16"/>
            </textElement>
            <textFieldExpression><![CDATA[$P{title}]]></textFieldExpression>
        </textField>
        <subreport>
            <reportElement x="0" y="50" width="555" height="32" uuid="780a1f25-065e-494a-ba1d-86a33b464343"/>
            <dataSourceExpression><![CDATA[$P{DS2}]]></dataSourceExpression>
            <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "subjectSubreport.jasper"]]></subreportExpression>
        </subreport>
    </band>
</summary>
</jasperReport>

下面是subjectSubreport.jrxml:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.9.0.final using JasperReports Library version 6.9.0-cb8f9004be492ccc537180b49c026951f4220bf3  -->
<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="multitable_summary" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="2a869c20-1e7d-4baa-92d7-c8d555f1f344">
    <queryString language="json">
        <![CDATA[]]>
    </queryString>
    <field name="subject" class="java.lang.String"/>
    <field name="zipCode" class="java.lang.Integer"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="23">
            <staticText>
                <reportElement x="0" y="0" width="100" height="20" uuid="a9730039-8418-4e58-a2eb-0babe8d2a380"/>
                <text><![CDATA[Subject]]></text>
            </staticText>
        </band>
    </title>
    <columnHeader>
        <band height="20">
            <staticText>
                <reportElement mode="Opaque" x="0" y="0" width="100" height="20" backcolor="#CCCCCC" uuid="a49b18ef-63c3-42bb-ae81-8d7d72ac9086"/>
                <box leftPadding="0">
                    <pen lineWidth="0.25"/>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement verticalAlignment="Middle"/>
                <text><![CDATA[Subject]]></text>
            </staticText>
            <staticText>
                <reportElement mode="Opaque" x="100" y="0" width="100" height="20" backcolor="#CCCCCC" uuid="c1c70fed-d887-429f-a3b0-ed645517e41f"/>
                <box leftPadding="0">
                    <pen lineWidth="0.25"/>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <text><![CDATA[ZipCode]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement x="0" y="0" width="100" height="20" uuid="401436b3-d9a1-40bd-8a1d-dfa3f162f842"/>
                <box leftPadding="0">
                    <pen lineWidth="0.25"/>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{subject}]]></textFieldExpression>
            </textField>
            <textField pattern="###0">
                <reportElement x="100" y="0" width="100" height="20" uuid="4447d3b0-6d3e-4795-8b5f-6a09d620448b"/>
                <box leftPadding="0">
                    <pen lineWidth="0.25"/>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{zipCode}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

这是printersSubreport.jrxml:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.9.0.final using JasperReports Library version 6.9.0-cb8f9004be492ccc537180b49c026951f4220bf3  -->
<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="multitable_subreport" pageWidth="555" pageHeight="802" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="5f89d251-66b1-4658-9af5-c057de138fb6">
    <field name="statusDesc" class="java.lang.String"/>
    <field name="lastUpdateTime" class="java.lang.Integer"/>
    <field name="criticalCount" class="java.lang.String"/>
    <columnHeader>
        <band height="20" splitType="Stretch">
            <staticText>
                <reportElement mode="Opaque" x="0" y="0" width="100" height="20" backcolor="#CCCCCC" uuid="bbb8857c-471c-4aca-a8fc-336d2748d7b9"/>
                <box>
                    <pen lineWidth="0.25"/>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement verticalAlignment="Middle"/>
                <text><![CDATA[Description]]></text>
            </staticText>
            <staticText>
                <reportElement mode="Opaque" x="100" y="0" width="100" height="20" backcolor="#CCCCCC" uuid="3fde89c9-d9a3-4972-8e3b-b2e619a51601"/>
                <box>
                    <pen lineWidth="0.25"/>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <text><![CDATA[UpdateTime]]></text>
            </staticText>
            <staticText>
                <reportElement mode="Opaque" x="200" y="0" width="100" height="20" backcolor="#CCCCCC" uuid="e82ece60-c92e-4d0b-8881-29d7d0d78e81"/>
                <box>
                    <pen lineWidth="0.25"/>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <text><![CDATA[Count]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement x="0" y="0" width="100" height="20" uuid="cdec861a-8b3b-413f-8b99-74d0e18ee19d"/>
                <box>
                    <pen lineWidth="0.25"/>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{statusDesc}]]></textFieldExpression>
            </textField>
            <textField pattern="###0.##">
                <reportElement x="100" y="0" width="100" height="20" uuid="9dfb9f78-74e5-4562-84fd-ebb87c3203ce"/>
                <box>
                    <pen lineWidth="0.25"/>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{lastUpdateTime}]]></textFieldExpression>
            </textField>
            <textField pattern="¤ #,##0.00">
                <reportElement x="200" y="0" width="100" height="20" uuid="923ff62d-ea1f-410e-94d3-fa7c574c001b"/>
                <box>
                    <pen lineWidth="0.25"/>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{criticalCount}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

当我切换子报告时,第一个报告正确显示,另一个报告消失。在JasperSoft Studio中,一切都很好,当我将它们导出为pdf/xls时,问题就开始了。

共有1个答案

何楷
2023-03-14

实际上,只显示其中一个(第一个)。当我切换子报告时,第一个正确显示,另一个消失

您声明:

<parameter name="DS1" class="net.sf.jasperreports.engine.data.JsonDataSource"/>
<parameter name="DS2" class="net.sf.jasperreports.engine.data.JsonDataSource"/>

JRDatasource是可消费的,这意味着如果您使用它来填充一个报告,它将被消费,因此对于下一个报告,在同一数据源上调用< code>next()将返回false。

您遇到的是,如果为 DS1 和 DS2 传递相同(相同的对象)数据源,DS1 将被消耗填充第一个子报表,然后由于 DS1 == DS2 DS2 在填充第二个子报表时已经使用第二个报表将没有记录(空)。

您需要克隆一个< code>DS1,创建一个新的对象,并将其作为< code>DS2传递。< code>JsonDataSource理论上也是一个< code > jrrewindabledata source ,因此您可以在填充第二个子报表之前调用< code>moveFirst(),但这在jrxml文件中并不容易,所以我不建议尝试使用此方法。

 类似资料:
  • 大家好,我想问一下为什么我在Javascript上的过滤器只显示第一行,不能取消过滤?我是javascript的新手,我已经给了这个类一个数字来检查,但似乎不起作用,这是我的代码 null null

  • 我是d3的新手,我正在尝试用它做一些数据可视化。我找到了一些关于如何在d3中创建时标的示例,但是当我按照示例尝试创建时标时,它失败了。我很沮丧,因为我想不出哪里出了问题...这个例子是这样的:如何使用d3.js在xAxis上格式化时间 这里的一些绘图代码……,最后: 然而,当我尝试时,我只能得到一个xAxis上的所有时间显示为“00:00”的图。这里出什么问题了?希望有人能帮帮我。谢谢!

  • 我有以下显示通知的方法: 在Android4.2中,当第一次收到消息(通知栏被清除)时,一个大图标(tickerText)会显示在通知栏中,几秒钟后它会被隐藏,通知会转到通知栏。如果我没有打开那个通知(通知栏没有被清除),并且收到第二个消息,大图标不会再次显示,但是设备发出正确的声音,并且如果用户打开通知栏,新消息的内容在通知栏中被成功更新。 您应该知道,大图标在Android3.x中一直显示。

  • 我的代码有问题。由于某些原因,它不会显示我的第二个按钮b2,并且我无法设置第一个按钮的大小。我想在中间有两个按钮,中间有一些空间。

  • 我的挂机命令工作得很好,除了我只能使用一个词原因。例如,我会说-afk遛狗。每当有人在我挂机的不和谐服务器上定位我时,它只会说(用户)如果afk。原因:走路。我正在想办法让它说多个单词而不是一个。这是我的AFK命令 @客户。_消息(消息)上的事件异步定义:全局afkdict if消息。afkdict作者:afkdict。pop(message.author)

  • 有人能解释一下为什么下面的测试失败了吗? 我试图进一步简化“不好”的观察结果,但找不到任何可以删除的东西来简化它。 然而,我目前的理解是,它是一个可观察的(不管它是如何构造的),应该发出一个值,然后完成。然后,我们基于该可观察对象制作两个类似的对象实例,并在那些使用可观察对象的对象上调用一个方法,记下已经这样做了,然后返回Observable.empty()。 有人能解释为什么使用这个可观察的会导