【发布时间】:2016-11-22 00:58:33
【问题描述】:
我目前正在尝试应用一种样式,该样式基本上会更改为交叉表中度量(详细信息)文本字段的颜色,以指示通过用户必须在报告开始时输入的参数选择的日期。以下是我遵循的步骤:
我创建了一个参数 $P{Date} 作为 java.sql.timestamp 并选中“用于提示”
在我的数据集查询中创建了相同的参数 $P{Date},其信息与之前的参数相同(此数据集将用于填充交叉表)
在我的交叉表项中创建相同的参数 $P{Date},信息也与之前相同
在“数据集”的交叉表属性中,我添加了具有相同名称“日期”和表达式 $P{Date} 的参数,并将参数映射留空
到目前为止,报告运行良好,数据参数适用于我的交叉表,按为参数选择的日期过滤数据。
-
使用以下表达式创建了我的条件样式 (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(最好是说明问题的最小版本)。