Reporting services 更改ssrs图表中的条填充颜色

Reporting services 更改ssrs图表中的条填充颜色,reporting-services,sql-server-2008-r2,ssrs-2008,Reporting Services,Sql Server 2008 R2,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" ) ) ) 如果我无法预测

目前我的RS图中有5个小节-未来可能有7个小节、17个小节或27个小节

通过几个条,我可以得到如下表达式:

=iif(Fields!Market.Value = "Spain"
,"Gold"
,iif (Fields!Market.Value = "Denmark"
    , "Gray"
    , iif(Fields!Market.Value = "Italy"
        , "Blue"
        , "Purple"
        )
    )
)
如果我无法预测将包括多少个国家,我宁愿不用硬编码“绿色”、“红色”等,我该如何更改表达式

我尝试过这个,但它出错了:

=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")
以上是完全不正确的语法:这是有效的:

=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")
好的-上面的运行(不确定如何运行!)但下面的是基于多米尼克·古莱特的帮助,非常容易理解,漂亮,可以扩展到更多颜色;这是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")

首先,与其使用很多“IIF”,不如使用“Switch”,这样更精简

Switch(Fields!Market.Value = "Spain", "Gold",
       Fields!Market.Value = "Denmark", "Gray",
       Fields!Market.Value = "Italy", "Blue")

现在,如果您想要每种颜色,您应该防御性地将其存储在数据库中,并在需要时将其取出。这样,一个国家的每一份报告都会有相同的颜色。

最好创建一个函数。为此,请转到“报告属性”,选择“代码”并键入以下示例:

Public Function Color(ByVal Index as Integer) as String

Select Case Index
Case = 1        
    return "#a6cee3"    
Case = 2        
    return "#1f78b4"    
Case = 3        
    return "#b2df8a"    
Case = 4        
    return "#33a02c"    
Case = 5        
    return "#fb9a99"    
Case = 6        
    return "#e31a1c"    
Case = 7        
    return "#fdbf6f"    
Case = 8        
    return "#ff7f00"    
Case = 9        
    return "#cab2d6"    
Case = 10       
    return "#6a3d9a"    

End Select

End Function
在“系列属性->拾取颜色->颜色选择”的填充选项上 把这个密码

=Code.Color(rownumber(nothing))
每个条都有一种颜色

对于我从网站上获取的十六进制颜色:
它显示了相互匹配的最佳颜色,因此您无需考虑。您可以添加任意数量的颜色

我想我有个更好的主意-对国家(或报告中的任何维度)进行排名然后把等级加到数据中,然后看看这个数字是否可以被2整除,如果可以的话,给它一种颜色,否则给它第二种颜色,这就是所谓的“交替颜色”“。这是一种有效的技术,主要用于表格中获得交替行颜色。我刚刚在OP中添加了我的尝试…你能看到它的错误吗:我希望获得3种交替颜色我有类似的问题,但我的问题是我不知道我将获得什么值。。。我将得到整数,但我需要为我得到的每个整数设置一个颜色。。。你能指引我吗?你最后一次的开关不对。12将产生“黄金”,而黄金应该是“灰色”。您应该使用(Fields!Rank.Value Mod 3=0)、(Fields!Rank.Value Mod 3=1)和(Fields!Rank.Value Mod 3=2)条件。