【问题标题】:Apply a conditional style to a crosstab with parameter将条件样式应用于带有参数的交叉表
【发布时间】:2016-11-22 00:58:33
【问题描述】:

我目前正在尝试应用一种样式,该样式基本上会更改为交叉表中度量(详细信息)文本字段的颜色,以指示通过用户必须在报告开始时输入的参数选择的日期。以下是我遵循的步骤:

  1. 我创建了一个参数 $P{Date} 作为 java.sql.timestamp 并选中“用于提示”

  2. 在我的数据集查询中创建了相同的参数 $P{Date},其信息与之前的参数相同(此数据集将用于填充交叉表)

  3. 在我的交叉表项中创建相同的参数 $P{Date},信息也与之前相同

  4. 在“数据集”的交叉表属性中,我添加了具有相同名称“日期”和表达式 $P{Date} 的参数,并将参数映射留空

到目前为止,报告运行良好,数据参数适用于我的交叉表,按为参数选择的日期过滤数据。

  1. 使用以下表达式创建了我的条件样式 (Style1):

    AND(MONTH(${crosstab_month}).equals(MONTH($P{Date})),
         YEAR(${crosstab_month}).equals(YEAR($P{Date})),
          DAY(${crosstab_month}).equals(01))
    

${crosstab_month} 是显示日期的列组(包含每个月的第一天,也是一个时间戳)。

现在,当我运行报告时,我似乎无法让它工作,我将所有字段上的标记设置为“样式”,并将“样式和打印详细信息”中的标记设置为 Style1。

我是不是忘记了什么?我不明白为什么这不起作用,因为如果我在样式表达式中用 NOW() 更改 $P{Date} 它可以工作...... $P{Date} 值是否以某种方式无法正确评估为日期/时间戳?

【问题讨论】:

  • 您可能缺少的是将 $P{Date} 传递给子数据集。这将在数​​据集运行中完成(交叉表数据集定义的一部分)。
  • 这不是第3步和第4步吗?
  • 好吧,我的错。您能否在交叉表文本字段(例如使用 Style1 的字段)中显示 $P{Date},以验证交叉表参数的值?
  • 我将 $P{Date} 添加到我的交叉表中,但它显示为“null”。我在这里错过了什么?
  • 发布您的 JRXML(最好是说明问题的最小版本)。

标签: jasper-reports crosstab


【解决方案1】:

所以我做了一个变通方法来解决这个问题,那就是改变查询以获取输入参数 $P{Date} 的值,并在我的交叉表中插入一个新列(w=0 和 h= 0).

之后我将样式条件更改为;

AND(MONTH(${crosstab_month}).equals(MONTH($V{ReportDate})),
 YEAR(${crosstab_month}).equals(YEAR($V{ReportDate})),
  DAY(${crosstab_month}).equals(01))

$V{ReportDate} 是交叉表上新列组的名称。

希望这会有所帮助! :) 谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2016-11-01
    • 2018-10-16
    • 2013-10-22
    相关资源
    最近更新 更多