Jasper 子报表未显示
Jasper subreport not showing
我正在使用 Eclipse JasperReports Studio 并且 运行 遇到了一个我无法解决的问题。我有一个非常基本的报告,其中包含 return 大约 30 行的详细信息字段。我有一个要合并到主报告中的子报告,但是当我添加它时没有任何显示。我尝试将它添加到列页脚、页脚中的第 x 页,共 x 个字段,以及详细信息字段。效果不是很好,因为它在检索到的每一行之间添加了一个空白点。我还有其他报告,其中包含各个波段的子报告,它们都可以正常工作。这是列页脚的子报表代码:
<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 文件也在那里。
我在使用子报表时遇到了同样的问题。
在编辑器中: 删除内容表单 connectionExpression
将 $P{REPORT_PARAMETERS_MAP}
放在 Parameters Map Expression
中对我有用。
源代码: <parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
验证 子报表表达式 是否指向 correct/expected 子报表。有时(通常是由于复制 and/or 手动编辑现有 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>
您还应确认您的子报表不需要数据即可显示。如果是,而您的查询没有 return 任何数据,您可以执行以下操作:
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
快速提醒,仔细检查所有 <subreportExpression>
元素的值是否正确。确保 Build All
项目文件。
主报表会调用子报表的编译版本。因此,一旦您测试并保存了子报表,请单击 Build All
按钮或单击 window 顶部 'Project' 菜单下的菜单选项。
我正在使用 Eclipse JasperReports Studio 并且 运行 遇到了一个我无法解决的问题。我有一个非常基本的报告,其中包含 return 大约 30 行的详细信息字段。我有一个要合并到主报告中的子报告,但是当我添加它时没有任何显示。我尝试将它添加到列页脚、页脚中的第 x 页,共 x 个字段,以及详细信息字段。效果不是很好,因为它在检索到的每一行之间添加了一个空白点。我还有其他报告,其中包含各个波段的子报告,它们都可以正常工作。这是列页脚的子报表代码:
<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 文件也在那里。
我在使用子报表时遇到了同样的问题。
在编辑器中: 删除内容表单 connectionExpression
将 $P{REPORT_PARAMETERS_MAP}
放在 Parameters Map Expression
中对我有用。
源代码: <parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
验证 子报表表达式 是否指向 correct/expected 子报表。有时(通常是由于复制 and/or 手动编辑现有 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>
您还应确认您的子报表不需要数据即可显示。如果是,而您的查询没有 return 任何数据,您可以执行以下操作:
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
快速提醒,仔细检查所有 <subreportExpression>
元素的值是否正确。确保 Build All
项目文件。
主报表会调用子报表的编译版本。因此,一旦您测试并保存了子报表,请单击 Build All
按钮或单击 window 顶部 'Project' 菜单下的菜单选项。