ssrs将图表颜色映射到一个类别

时间:2017-03-24 19:22:50

标签: reporting-services charts vbscript

我有一个饼图和条形图,用于显示一些数据。我想将图表中的颜色映射到特定颜色的部门。 代码运行时没有错误,但颜色并不总是映射到同一个部门。

此功能位于“代码”部分的报告正文中:

Private mapping As New System.Collections.Hashtable()  
Private colorPalette As String() = {"#5badff", "#8c001a", "#a33247", "#ba6675", "#d199a3", "#e8ccd1"}  
Private boardNames As String() = {"Dept1", "Dept2", "App", "IT", "Delivery", "Development"}  

Public Function SetColorsToBoard()
    Dim count As Integer = 0
    Dim name As String = ""

    IF colorPalette.Length = boardNames.Length Then
        For Each name in boardNames         
            mapping.Add(name, colorPalette(count))
            count = count + 1
        Next
    End If
End Function

Public Function GetColor(ByVal groupingValue As String) As String  
   If mapping.ContainsKey(groupingValue) Then  
        Return mapping(groupingValue)  
    End If  
    Call SetColorsToBoard 
End Function  

如果有Dept1的数据,颜色将按预期显示。当我选择不同的公司而他们在查询中没有Dept1时,Dept2被设置为第一种颜色。 当我尝试编写函数时,它不依赖于数据。

GetColor函数在每个图表的颜色部分中作为表达式调用。

为什么映射依赖于查询返回的数据?

更新 我发现我的条形图是堆叠的。当我只有1个部门。在图表中,第一个栏是“蓝色”,这是第一个颜色。第二个酒吧是勃艮第,这是第二种颜色。部门是系列分组。在此图表中只有2个部门。当有2个部门时,颜色是正确的。

1 个答案:

答案 0 :(得分:0)

我明白了...... 我需要在调用之后添加return mapping(groupingValue)来设置映射。 这是GetColor函数:

Public Function GetColor(ByVal groupingValue As String) As String  
   If mapping.ContainsKey(groupingValue) Then  
        Return mapping(groupingValue)  
    End If  
    Call SetColorsToBoard 
    Return mapping(groupingValue)  
End Function