【问题标题】:column value comparison and fill color change based on the expression基于表达式的列值比较和填充颜色变化
【发布时间】:2019-10-08 08:04:09
【问题描述】:

我正在比较来自不同数据仓库的 2 个相似表并编写报告以突出基于差异的差异。如果两个字段不同,我想突出显示它们的列值。所以,我正在尝试编写填充颜色表达式,它可以根据列中的值更改颜色。

我试过写一些表达式。

以下是示例:

我试过了:

=IIF(Fields!DB1.Value=”NULL”,”Red”,”White”) 或 IIF(Fields!Db2.Value=”NULL”,”Red”,”White”) 或 IIF(Fields!DB1.Value=Fields!DB2.Value,"NO Color","Red")

--不工作

=IIF(Fields!DB1_Number.ValueFields!DB2_Number.Value,"NO Color","Red")

-- 不处理NULL

没有错误。只是代码没有按照意图运行。

【问题讨论】:

  • 你试过什么都没有吗?
  • 是的。但是,它不适用于 NULL。
  • Isnothing 等同于检查 NULL.. test =isnothing(Fields!DB1.Value) 以查看它是否为空值返回 1.. 如果返回.. 那么它正在工作。
  • 不清楚你想要得到什么。您给出的第一个示例在 IIf 函数之外有 OR 语句,这意味着您只是在比较字符串,结果将是布尔值,而不是颜色。您希望将所有条件放在一个 IIf 语句中。
  • 另一种方法是通过在那里进行所有比较(案例陈述??)来导出数据集中的颜色,并据此分配颜色。那么只需要使用派生列的颜色作为报表的背景颜色即可!

标签: reporting-services ssrs-2012


【解决方案1】:

只需使用第二个表达式并在之前检查 Null:

=IIF(IsNothing(Fields!DB1_Number.Value) And IsNothing(Fields!DB2_Number.Value), "Red", 
     IIF(Fields!DB1_Number.Value <> Fields!DB2_Number.Value,
         "White",
         "Red")
     )

【讨论】:

  • 这应该可以,但我认为颜色与 OP 的预期结果相反。此外,当您想要默认背景时,最好使用Nothing(无引号)而不是"White""NoColor"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 1970-01-01
  • 2018-02-15
  • 1970-01-01
  • 2017-08-30
相关资源
最近更新 更多