3

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

4

3 回答 3

6

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

我经常使用它——例如 printWhenExpression 字段可能包含:

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

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

于 2008-12-23T03:32:55.273 回答
0

据我所知,如果子报表中没有打印任何数据,Jasper 会消除空格。换句话说,如果您的子报表通常会占用半页,但没有数据,那么空白空间将被消除。我不确定这就是您所说的包含或排除报告的意思。

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

于 2009-11-17T14:01:31.070 回答
0

Jamie Love 对“printWhenExpression”的回答恰到好处。

如果子报表中没有打印任何数据,Jasper 会消除空格

实际上,至少在 JasperReports 3.7.0 中有一个子报表属性“Remove Line When Blank”来控制该行为。默认情况下——至少在我使用 iReport 时——该参数是关闭的。

威格

于 2010-01-11T01:55:05.190 回答