SSRS 2008 R2 中条件格式的开关表达式
Switch expression for conditional formatting in SSRS 2008 R2
我有这个条件格式表达式(用于背景颜色),效果很好:
=SWITCH(
Fields!Fire_Safety.Value = "F", "LimeGreen",
Fields!Fire_Safety.Value = "i", "Red",
Fields!Fire_Safety.Value = "E", "Yellow",
TRUE,Nothing
)
我现在已经更改了数据 table(通过 SQL),所以“F”所在的位置现在有了日期。
我将 Switch 表达式(在 SSRS 中)更改为:
=SWITCH(
Fields!Fire_Safety.Value <= dateadd("d",90,Today()),"Orange",
Fields!Fire_Safety.Value >= dateadd("d",91,Today()),"LimeGreen",
Fields!Fire_Safety.Value = "i", "Red",
Fields!Fire_Safety.Value = "E", "Yellow",
TRUE,Nothing
)
它失败了。日期字段似乎有效,但“i”和“E”无效。
我想一定是语法问题,但我有点迷茫...有什么想法吗?
您在评论中指出:
So I guess this means Switch can do text or dates, but not both?
没有。在谓词中你可以使用任何你喜欢的数据类型,考虑这个简单的例子:
=SWITCH(
"A" = "B", 1,
1 = 0, 2,
TRUE, 3)
第一个表达式比较字符串,第二个表达式比较整数这一事实无关紧要,对 switch 函数真正重要的是谓词的结果,即上面的示例与以下示例没有什么不同:
=SWITCH(
FALSE, 1,
FALSE, 2,
TRUE, 3)
实际问题出自以下表达式:
Fields!Fire_Safety.Value = "i"
无论它嵌入什么,你都会得到一个错误。
=IF(Fields!Fire_Safety.Value = "i", 1, 0)
会给出同样的错误。
问题在于,由于Fields!Fire_Safety.Value
是日期,为了将日期与字符串进行比较,必须先将字符串转换为日期,而"i"无法转换为a日期,因此您会收到错误消息。如果您的列仅包含日期,则第三个和第四个条件永远不会为真,因此最好将它们删除。
我有这个条件格式表达式(用于背景颜色),效果很好:
=SWITCH(
Fields!Fire_Safety.Value = "F", "LimeGreen",
Fields!Fire_Safety.Value = "i", "Red",
Fields!Fire_Safety.Value = "E", "Yellow",
TRUE,Nothing
)
我现在已经更改了数据 table(通过 SQL),所以“F”所在的位置现在有了日期。
我将 Switch 表达式(在 SSRS 中)更改为:
=SWITCH(
Fields!Fire_Safety.Value <= dateadd("d",90,Today()),"Orange",
Fields!Fire_Safety.Value >= dateadd("d",91,Today()),"LimeGreen",
Fields!Fire_Safety.Value = "i", "Red",
Fields!Fire_Safety.Value = "E", "Yellow",
TRUE,Nothing
)
它失败了。日期字段似乎有效,但“i”和“E”无效。
我想一定是语法问题,但我有点迷茫...有什么想法吗?
您在评论中指出:
So I guess this means Switch can do text or dates, but not both?
没有。在谓词中你可以使用任何你喜欢的数据类型,考虑这个简单的例子:
=SWITCH(
"A" = "B", 1,
1 = 0, 2,
TRUE, 3)
第一个表达式比较字符串,第二个表达式比较整数这一事实无关紧要,对 switch 函数真正重要的是谓词的结果,即上面的示例与以下示例没有什么不同:
=SWITCH(
FALSE, 1,
FALSE, 2,
TRUE, 3)
实际问题出自以下表达式:
Fields!Fire_Safety.Value = "i"
无论它嵌入什么,你都会得到一个错误。
=IF(Fields!Fire_Safety.Value = "i", 1, 0)
会给出同样的错误。
问题在于,由于Fields!Fire_Safety.Value
是日期,为了将日期与字符串进行比较,必须先将字符串转换为日期,而"i"无法转换为a日期,因此您会收到错误消息。如果您的列仅包含日期,则第三个和第四个条件永远不会为真,因此最好将它们删除。