【问题标题】:Jasper subreport not showingJasper 子报告未显示
【发布时间】:2015-05-12 17:22:08
【问题描述】:

我正在使用 Eclipse JasperReports Studio,但遇到了一个我无法解决的问题。我有一个非常基本的报告,其中包含返回大约 30 行的详细信息字段。我有一个要合并到主报告中的子报告,但是当我添加它时,什么都没有显示。我已经尝试将它添加到列页脚、页脚和我的第 x 页字段以及详细信息字段中。效果不太好,因为它在检索到的每一行之间添加了一个空白点。我有其他报告以及各个频段的子报告,它们都运行良好。下面是 col 页脚的子报表代码:

    <columnFooter>
    <band height="110">
        <subreport>
            <reportElement isPrintRepeatedValues="false" x="0" y="10" width="555" height="100" uuid="34205e71-ec6b-422c-aa27-057678430999"/>
            <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
            <subreportExpression><![CDATA["The_Report.jasper"]]></subreportExpression>
        </subreport>
    </band>
</columnFooter>

有什么明显的原因导致这不会出现吗?我没有收到任何错误,主报告运行良好。子报表单独运行良好,并且与主报表位于同一目录中。我在那里编译它,.jasper 文件也在那里。

【问题讨论】:

    标签: jasper-reports subreport


    【解决方案1】:

    我在使用子报表时遇到了同样的问题。
    在编辑器中:删除内容表单connectionExpression
    $P{REPORT_PARAMETERS_MAP} 放在Parameters Map Expression 中对我有用。

    源码:&lt;parametersMapExpression&gt;&lt;![CDATA[$P{REPORT_PARAMETERS_MAP}]]&gt;&lt;/parametersMapExpression&gt;

    【讨论】:

    • 我觉得我很困惑。那么子报表的路径在哪里......如果不在表达式中?我在编辑器中将 paramMapExp 更改为上面列出的内容,删除了表达式,但仍然只得到主报告。源代码是相同的:' '
    • 对不起,我写错了。删除的内容。保留表达式并将 paramtersMapExpression 更改为我上面提供的内容。我将编辑答案以供将来参考。
    • 我将编辑添加到我的答案中,很抱歉造成混淆。
    • 这里是新部分 ' subreportExpression> ' 它仍然无法正常工作。我得到的只是主要报告。我试着把它放在摘要和 col 页脚中。
    • 实际上,在 col 页脚中我收到一个错误,说子报表在不支持溢出的带上溢出。我将位置类型设置为浮动,但与固定相同。
    【解决方案2】:

    验证 子报表表达式 是否指向正确/预期的子报表。有时(通常是由于复制和/或手动编辑现有 JRXML 文件)子报表表达式 仍指向原始主报表的子报表 Jasper 文件。我自己也遇到过这种情况。

    确保

    <subreportExpression><![CDATA["The_Report.jasper"]]></subreportExpression>
    

    不应该是这样的

    <subreportExpression><![CDATA["The_New_SubReport.jasper"]]></subreportExpression>
    

    或包含子报表目录,如

    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "The_New_SubReport.jasper"]]></subreportExpression>
    

    您还应该确认您的子报表不需要数据即可显示。如果是这样并且您的查询没有返回任何数据,您可以执行以下操作:

    SELECT FIELD_NAME
    FROM TABLE
    WHERE KEY = $P{KEY}
    
    UNION ALL
    
    SELECT NULL AS FIELD_NAME
    FROM DUAL WHERE (
      SELECT COUNT(*)
      FROM TABLE
      WHERE KEY = $P{KEY}
    ) = 0
    

    【讨论】:

      【解决方案3】:

      在仔细检查所有&lt;subreportExpression&gt; 元素的值是否正确后,快速提醒您。确保您Build All 项目文件。

      主报表将调用子报表的编译版本。因此,一旦您测试并保存了子报告,请单击 Build All 按钮或单击窗口顶部“项目”菜单下的“菜单”选项。

      【讨论】:

        猜你喜欢
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-04
        • 1970-01-01
        相关资源
        最近更新 更多