SSRS 2012 行内的交替组颜色
SSRS 2012 Alternating Group Colour within rows
嗨,我有一个简单的 SSRS 2012 报告,其中包含 table。所有数据都通过存储过程显示。没有分组即
部门姓名年龄
A 级 Bob 15
A 级起诉 16
A 类乔 15
B 级山姆 15
B 类插孔 15
B 级玛丽 16
C 级皮特 15
C 级起诉 16
D 级 Jo 15
D 级玛丽 14
D 级杰克 14
我希望每个 'group' 的行色块改变,即先是白色,然后是蓝色
非常感谢
您可以在您希望报告更改颜色的任何位置使用以下表达式(背景、文本)。
=Switch(
Fields!Dept.Value = "ClassA" , "Red"
, Fields!Dept.Value = "ClassB" , "Orange"
, Fields!Dept.Value = "ClassC" , "Green"
, Fields!Dept.Value = "ClassD" , "Yellow"
)
在 Report
-Report Properties...
的 Code
选项卡上插入以下代码:
Dim LastDept AS String = ""
Dim Color AS String
Function GetColor(Dept As String) AS String
if (Dept <> LastDept) Then
if (Color = "White") Then
Color = "PowderBlue"
Else
Color = "White"
End If
End If
End Function
然后将您所在行的 BackgroundColor
表达式设置为
=Code.GetColor(Fields!Dept.Value)
只要部门发生变化,就会在白色和粉蓝色之间切换行的背景色。
一段时间以来,我一直在寻找同一件事的解决方案,只是偶然发现了这个解决方案。
将以下表达式添加到正在分组的行的背景色 属性 将交替使用 Gainsboro 和白色之间的组颜色。
=IIF(RunningValue(Fields!Category.Value,CountDistinct, Nothing) MOD 2 = 1, "Gainsboro", "White")
其中字段!Category.Value 是您分组所依据的存储过程的值。
希望这就是您要找的。
谢谢
我将类似的东西用于各种替代颜色方案。
在报告的自定义代码中:
Private CountArr(,) AS String
Private eleID AS Integer
Public Function AlternateColours(OddCol AS String, EvenCol AS String, RowID AS String, UserID AS Integer)
If UserID > eleID
eleID = UserID
ReDim Preserve CountArr(1,eleID -1)
End If
If CountArr(0,UserID-1) <> RowID
CountArr(0,UserID-1) = RowID
CountArr(1, UserID-1) += 1
End If
If CountArr(1, UserID-1) MOD 2 <> 0
Return OddCol
Else
Return EvenCol
End If
End Function
Public Function ResetAlternateColours(Value AS String)
ReDim CountArr(1, 0)
eleID = 0
Return Value
End Function
说明
OddCol 是第一种颜色,EvenCol 是备用颜色,RowID 是一个字符串,用于确定何时发生行更改 -- 这可以是正确标识新行的任何值,例如字段值的串联或甚至只是未分组行的任意字符串。 (根据您的要求,您的参数将是字段!Dept.Value)
UserID 是由用户选择的整数值,用于标识行在数组中的位置。推荐的用法是按照报表呈现的顺序从 1 开始提供数字。
仅供参考:报告按阅读顺序呈现,即从左到右、从上到下。
重置功能也包含在您希望交替颜色从头开始的区域中。对于我个人的使用,我让它接受一个字符串作为值,并在重置后 return 该值。
=Code.ResetAlternateColours(字段!Total.Value)
没有必要,您可以从函数中删除 return 值,然后将其添加到单元格的末尾。
=字段!Total.Value + Code.ResetAlternateColours()
只要记住渲染顺序就可以了。
此函数可用于列、行、单元格以及您能想到的任何其他内容,只要您记住呈现顺序并相应地递增 UserID。
供您使用:
=Code.AlternateColours("White", "Blue", 字段!Dept.Value, 1)
嗨,我有一个简单的 SSRS 2012 报告,其中包含 table。所有数据都通过存储过程显示。没有分组即
部门姓名年龄
A 级 Bob 15
A 级起诉 16
A 类乔 15
B 级山姆 15
B 类插孔 15
B 级玛丽 16
C 级皮特 15
C 级起诉 16
D 级 Jo 15
D 级玛丽 14
D 级杰克 14
我希望每个 'group' 的行色块改变,即先是白色,然后是蓝色
非常感谢
您可以在您希望报告更改颜色的任何位置使用以下表达式(背景、文本)。
=Switch(
Fields!Dept.Value = "ClassA" , "Red"
, Fields!Dept.Value = "ClassB" , "Orange"
, Fields!Dept.Value = "ClassC" , "Green"
, Fields!Dept.Value = "ClassD" , "Yellow"
)
在 Report
-Report Properties...
的 Code
选项卡上插入以下代码:
Dim LastDept AS String = ""
Dim Color AS String
Function GetColor(Dept As String) AS String
if (Dept <> LastDept) Then
if (Color = "White") Then
Color = "PowderBlue"
Else
Color = "White"
End If
End If
End Function
然后将您所在行的 BackgroundColor
表达式设置为
=Code.GetColor(Fields!Dept.Value)
只要部门发生变化,就会在白色和粉蓝色之间切换行的背景色。
一段时间以来,我一直在寻找同一件事的解决方案,只是偶然发现了这个解决方案。
将以下表达式添加到正在分组的行的背景色 属性 将交替使用 Gainsboro 和白色之间的组颜色。
=IIF(RunningValue(Fields!Category.Value,CountDistinct, Nothing) MOD 2 = 1, "Gainsboro", "White")
其中字段!Category.Value 是您分组所依据的存储过程的值。
希望这就是您要找的。
谢谢
我将类似的东西用于各种替代颜色方案。
在报告的自定义代码中:
Private CountArr(,) AS String
Private eleID AS Integer
Public Function AlternateColours(OddCol AS String, EvenCol AS String, RowID AS String, UserID AS Integer)
If UserID > eleID
eleID = UserID
ReDim Preserve CountArr(1,eleID -1)
End If
If CountArr(0,UserID-1) <> RowID
CountArr(0,UserID-1) = RowID
CountArr(1, UserID-1) += 1
End If
If CountArr(1, UserID-1) MOD 2 <> 0
Return OddCol
Else
Return EvenCol
End If
End Function
Public Function ResetAlternateColours(Value AS String)
ReDim CountArr(1, 0)
eleID = 0
Return Value
End Function
说明
OddCol 是第一种颜色,EvenCol 是备用颜色,RowID 是一个字符串,用于确定何时发生行更改 -- 这可以是正确标识新行的任何值,例如字段值的串联或甚至只是未分组行的任意字符串。 (根据您的要求,您的参数将是字段!Dept.Value)
UserID 是由用户选择的整数值,用于标识行在数组中的位置。推荐的用法是按照报表呈现的顺序从 1 开始提供数字。
仅供参考:报告按阅读顺序呈现,即从左到右、从上到下。
重置功能也包含在您希望交替颜色从头开始的区域中。对于我个人的使用,我让它接受一个字符串作为值,并在重置后 return 该值。
=Code.ResetAlternateColours(字段!Total.Value)
没有必要,您可以从函数中删除 return 值,然后将其添加到单元格的末尾。
=字段!Total.Value + Code.ResetAlternateColours()
只要记住渲染顺序就可以了。
此函数可用于列、行、单元格以及您能想到的任何其他内容,只要您记住呈现顺序并相应地递增 UserID。
供您使用:
=Code.AlternateColours("White", "Blue", 字段!Dept.Value, 1)