Jasper reports 包含和排除子报告(iReport JasperReports)

Jasper reports 包含和排除子报告(iReport JasperReports),jasper-reports,ireport,Jasper Reports,Ireport,我需要根据条件包含或排除子报表。我正在使用iReport创建JasperReports。也就是说,如果子报表有值,我需要包含该子报表,否则就不需要。任何人都可以发送一个示例或告诉我如何解决此问题。您可以在主报告中从您的数据源获取数据,以确定是否应包含子报告,然后使用子报告元素上的“printWhenExpression”字段检查该数据 我经常使用此选项-例如,printWhenExpression字段可能包含: new Boolean($F{TOTAL_STATS}.intValue() !=

我需要根据条件包含或排除子报表。我正在使用iReport创建JasperReports。也就是说,如果子报表有值,我需要包含该子报表,否则就不需要。任何人都可以发送一个示例或告诉我如何解决此问题。

您可以在主报告中从您的数据源获取数据,以确定是否应包含子报告,然后使用子报告元素上的“printWhenExpression”字段检查该数据

我经常使用此选项-例如,printWhenExpression字段可能包含:

new Boolean($F{TOTAL_STATS}.intValue() != 0)

其中TOTAL_STATS来自主报告的数据库查询。如果非零,我们显示一个子报告详细的一些数据。

< P>从我的知识,如果没有任何数据打印在子报表中,蟑螂合唱团消除空白。换句话说,如果子报表通常占据半页,但没有数据,则会消除空白。我不确定这就是你所说的包括或排除报告的意思

另一种解决方案是将子报表放在主报表中,然后从右键单击->属性->子报表选项卡,选择“子报表条件”选项卡并将条件写入其中。如果条件为真,则子报告的内容将被打印,否则将不打印。

杰米·洛夫关于“打印时打印”的回答是正确的

如果子报表中没有打印任何数据,则蟑螂合唱团消除空白空间

实际上,至少在JasperReports 3.7.0中,有一个子报表属性“Remove Line When Blank”控制该行为。默认情况下-至少在我使用iReport时-该参数处于禁用状态


WEG

稍微好一点,但现在您创建了一个重复的问题。您应该编辑旧问题,而不是发布新问题。此外,您还没有修复标记…我关闭了旧问题并重新标记/改进了语法。谢谢您。这是d首次这么做至少在3.7.6中,您还需要对子报表所在的区域使用Split Type=Strech。否则,即使子报表不包含任何数据,也会有空白。