在ssrs图表中更改条形填充颜色

why*_*heq 3 sql-server-2008-r2 reporting-services ssrs-2008

所以发帖

目前我的RS图表中有5个柱 - 未来可能有7个柱或17个柱或27个柱!

有几个酒吧,我可以有这样的表达式:

=iif(Fields!Market.Value = "Spain"
,"Gold"
,iif (Fields!Market.Value = "Denmark"
    , "Gray"
    , iif(Fields!Market.Value = "Italy"
        , "Blue"
        , "Purple"
        )
    )
)
Run Code Online (Sandbox Code Playgroud)

如果我无法预测将包括多少国家+我宁愿不必硬编码"绿色","红色"等我如何更改表达式?

我试过这个但是错了:

=Switch(Mod(Fields!Rank.Value/CDbl(2))=CDbl(0), "Gold", 
   Mod(Fields!Rank.Value/CDbl(3))=CDbl(0), "Gray", 
   Mod(Fields!Rank.Value/CDbl(2))>CDbl(0) "Blue")
Run Code Online (Sandbox Code Playgroud)

以上是完全不正确的语法:这有效:

=Switch(CDbl(Fields!Rank.Value Mod 2)=CDbl(0), "Gold", 
   CDbl(Fields!Rank.Value Mod 3)=CDbl(0), "Gray", 
   CDbl(Fields!Rank.Value Mod 2)>CDbl(0), "Blue")
Run Code Online (Sandbox Code Playgroud)

好的 - 以上运行(不确定如何!)但是下面是基于Dominic Goulet的帮助,并且非常容易遵循,并且很好并且可以扩展到更多颜色; 这是5种颜色的解决方案:

=Switch(CDbl(Fields!Rank.Value Mod 5)=CDbl(0), "Gold", 
   CDbl(Fields!Rank.Value Mod 5)=CDbl(1), "Gray", 
   CDbl(Fields!Rank.Value Mod 5)=CDbl(2), "Green", 
   CDbl(Fields!Rank.Value Mod 5)=CDbl(3), "Red", 
   CDbl(Fields!Rank.Value Mod 5)=CDbl(4), "Pink")
Run Code Online (Sandbox Code Playgroud)

Dom*_*let 6

首先,不要使用很多"IIF",而应该使用"Switch",它更精简.

Switch(Fields!Market.Value = "Spain", "Gold",
       Fields!Market.Value = "Denmark", "Gray",
       Fields!Market.Value = "Italy", "Blue")
Run Code Online (Sandbox Code Playgroud)

现在,如果你想要每个颜色的颜色,你应该在数据库中明确地存储颜色,并在需要时将其拉出来.这样,一个国家在每份报告上都会有相同的颜色.