SSRS:根据表达式更改字体颜色

时间:2016-01-12 11:24:58

标签: reporting-services fonts colors

我试图在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都设为黑色。

基本上,我只想要:

  1. 当A = P = 0黑色
  2. 当A> = P(例如,两者都是5)时,则为绿色
  3. 当A&lt; P Red
  4. 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声明无效吗?

    非常感谢您的帮助。 谢谢。

2 个答案:

答案 0 :(得分:1)

如果你的问题是

  

我的值是P = 0,A = 5,但颜色不是绿色

(我认为是)

然后这是因为你正在使用构造

=IIF(Fields!A.Value<>0 AND Fields!P.Value <>0 , truepart, falsepart)

你是说当A不为零时才做真正的部分 AND P不为零。因为您要比较值0和5,所以因为其中一个为零,所以将执行错误部分。

实施规则

  
      
  1. 当A = P = 0黑色
  2. 时   
  3. 当A> = P(例如,两者都是5)时,则为绿色
  4.   
  5. 当A&lt; P Red
  6.   

然后你需要一个像

这样的表达式
=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"
       )
   )