我正在使用Eclipse JasperReports Studio并遇到了一个我无法解决的问题。我有一个非常基本的报告,详细字段返回大约30行。我有一个子报告,我想将其纳入主报告,但是当我添加它时,没有显示任何内容。我已经尝试将它添加到列页脚,页面页脚和x页面的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文件也存在。
答案 0 :(得分:2)
验证子报表表达式是否指向正确/预期的子报表。有时(通常是由于复制和/或手动编辑现有的JRXML文件)子报表表达式仍然指向原始主报表的子报表Jasper文件。我自己也遇到了这个案子。
确保
<subreportExpression><![CDATA["The_Report.jasper"]]></subreportExpression>
不应该像
那样<subreportExpression><![CDATA["The_New_SubReport.jasper"]]></subreportExpression>
或包含像
这样的Subreport目录<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
答案 1 :(得分:0)
使用子报告时遇到了同样的问题
在编辑器中:删除内容表单connectionExpression
将$P{REPORT_PARAMETERS_MAP}
放入Parameters Map Expression
为我做了诀窍。
源代码: <parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>