【问题标题】:Inclusion and exclusion of subreports (iReport-JasperReports)子报表的包含和排除 (iReport-JasperReports)
【发布时间】:2008-12-16 04:25:40
【问题描述】:

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

【问题讨论】:

  • 好一点,但现在您创建了一个重复的问题。您应该编辑旧问题而不是发布新问题。另外,您还没有修复标签...
  • 我关闭了旧问题并重新标记/改进了语法。
  • 谢谢你..这是我第一次做

标签: jasper-reports ireport


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      WEG

      【讨论】:

      • 至少3.7.6还需要对子报表所在的band使用Split Type = Strech。否则即使子报表不包含任何数据也会有空白。
      猜你喜欢
      • 2010-10-14
      • 2012-08-03
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 2013-11-11
      • 2011-05-18
      • 1970-01-01
      • 2019-09-07
      相关资源
      最近更新 更多