我试图在ssrs中为字体颜色提供以下表达式:
=IIF(Fields!A.Value<>0 AND Fields!P.Value <>0, IIF(Fields!A.Value >= Fields!P.Value, "Green", "Red"), "Black")
它适用于所有数字,除非A或P中的任何一个为0时,我将A和P都设为黑色。
基本上,我只想要:
IIF语法没有像我预期的那样工作,即当我在P中有0而在A中有5时,那么字体颜色应该是绿色,反之亦然应该是红色。
我必须通过Switch语句来解决我想要的问题。
=Switch(Fields!A.Value>=Fields!P.Value and (Fields!P.Value<>0 AND Fields!P.Value <>0), "Green",
(Fields!A.Value = 0 and Fields!P.Value =0), "Black",
(Fields!A.Value=0 AND Fields!A.Value < Fields!P.Value), "Red",
(Fields!P.Value = 0 AND Fields!A.Value > Fields!P.Value), "Green")
有人可以向我解释为什么我的IIF声明无效吗?
非常感谢您的帮助。 谢谢。
答案 0 :(得分:1)
如果你的问题是
我的值是P = 0,A = 5,但颜色不是绿色
(我认为是)
然后这是因为你正在使用构造
=IIF(Fields!A.Value<>0 AND Fields!P.Value <>0 , truepart, falsepart)
你是说当A不为零时才做真正的部分 AND P不为零。因为您要比较值0和5,所以因为其中一个为零,所以将执行错误部分。
实施规则
- 当A = P = 0黑色
时- 当A> = P(例如,两者都是5)时,则为绿色
- 当A&lt; P Red
醇>
然后你需要一个像
这样的表达式=iif(Fields!A.Value = 0 AND Fields!P.Value = 0, "Black", <-- Set to Black if both zero
iif(Fields!A.Value >= Fields!P.Value , "Green", <-- Else, set to Green if A >= P
"Red")) <-- Otherwise set to Red
希望这很有帮助。如果我误解了请告诉我,我会尝试进一步协助
答案 1 :(得分:0)
您的IIF
无效,因为它正在做其他事情。要了解它正在做什么,SWITCH
的等效IIF
是:
=Switch(Fields!A.Value>=Fields!P.Value and (Fields!P.Value<>0 AND Fields!P.Value <>0), "Green",
NOT(Fields!A.Value>=Fields!P.Value and (Fields!P.Value<>0 AND Fields!P.Value <>0)), "Black",
Fields!A.Value<>0 AND Fields!P.Value <>0 AND NOT(Fields!A.Value >= Fields!P.Value), "Red"
你真正需要的是:
IIF(
Fields!P.Value=0 AND Fields!P.Value =0,
"Black",
IIF(
Fields!A.Value>=Fields!P.Value,
"Green",
"Red"
)
)