SSRS 条件格式
SSRS Conditional Formatting
我正在处理 SSRS 排名报告,其中排名 1 的背景应为绿色,最后一个排名的背景应为红色。
示例如下:
我尝试使用自定义代码,但它对我不起作用,如下所示:
SSRS 表达式使用如下:
=Code.RankColour(me.value, 1, Fields!RankName.Value)
RankColor代码如下:
Public Function RankColourTotals(ByVal Value As Decimal, ByVal MinValue As Decimal, ByVal MaxValue As Decimal) As String
Dim strColor As String
Select Case Value
Case MaxValue
strColor = "Salmon"
Case MinValue
strColor = "LightGreen"
Case Else
strColor = "Gainsboro"
End Select
Return strColor
End Function
注意:我使用的是SQL 2008 R2
您可以通过文本框中的单个表达式执行此操作。
将文本框的 BackgroundColour
设置为
=iif(Fields!myRank.Value = min(Fields!myRank.Value, "DataSet3"),
"Green",
iif(Fields!myRank.Value = max(Fields!myRank.Value, "DataSet3"),
"Red",
"White"
)
)
会给出结果
这是因为您要在整个数据集 DataSet3
.
中针对 myRank
的最大值和最小值搜索 myRank
的当前值
如果这能解决您的问题,或者您是否需要进一步的帮助,请告诉我。
最后我最终使用了函数调用,所以我可以灵活地在 1 个地方更改颜色,而不是更改所有列中的表达式(如果业务决定更改颜色)。我的代码如下
Public Function RankColour(ByVal Value As Integer, ByVal MinValue As Integer, ByVal MaxValue As Integer) As String
Dim strColor As String
Select Case Value
Case MaxValue
strColor = "Salmon"
Case MinValue
strColor = "LightGreen"
Case Else
strColor = "White"
End Select
Return strColor
End Function
然后列单元格中使用的表达式如下:
=Code.RankColour(me.value, Min(Fields!AbsenteeismRank.Value, "dataset1"), Max(Fields!AbsenteeismRank.Value, "dataset1"))
我在'Font / FontWeight' 属性 中使用了这个简单的表达式,以便切换到 Bold 所有非-零值:
=iif(Fields!ingresos.Value > 0, "Bold", "Default" )
有效!
我正在处理 SSRS 排名报告,其中排名 1 的背景应为绿色,最后一个排名的背景应为红色。
示例如下:
我尝试使用自定义代码,但它对我不起作用,如下所示:
SSRS 表达式使用如下:
=Code.RankColour(me.value, 1, Fields!RankName.Value)
RankColor代码如下:
Public Function RankColourTotals(ByVal Value As Decimal, ByVal MinValue As Decimal, ByVal MaxValue As Decimal) As String
Dim strColor As String
Select Case Value
Case MaxValue
strColor = "Salmon"
Case MinValue
strColor = "LightGreen"
Case Else
strColor = "Gainsboro"
End Select
Return strColor
End Function
注意:我使用的是SQL 2008 R2
您可以通过文本框中的单个表达式执行此操作。
将文本框的 BackgroundColour
设置为
=iif(Fields!myRank.Value = min(Fields!myRank.Value, "DataSet3"),
"Green",
iif(Fields!myRank.Value = max(Fields!myRank.Value, "DataSet3"),
"Red",
"White"
)
)
会给出结果
这是因为您要在整个数据集 DataSet3
.
myRank
的最大值和最小值搜索 myRank
的当前值
如果这能解决您的问题,或者您是否需要进一步的帮助,请告诉我。
最后我最终使用了函数调用,所以我可以灵活地在 1 个地方更改颜色,而不是更改所有列中的表达式(如果业务决定更改颜色)。我的代码如下
Public Function RankColour(ByVal Value As Integer, ByVal MinValue As Integer, ByVal MaxValue As Integer) As String
Dim strColor As String
Select Case Value
Case MaxValue
strColor = "Salmon"
Case MinValue
strColor = "LightGreen"
Case Else
strColor = "White"
End Select
Return strColor
End Function
然后列单元格中使用的表达式如下:
=Code.RankColour(me.value, Min(Fields!AbsenteeismRank.Value, "dataset1"), Max(Fields!AbsenteeismRank.Value, "dataset1"))
我在'Font / FontWeight' 属性 中使用了这个简单的表达式,以便切换到 Bold 所有非-零值:
=iif(Fields!ingresos.Value > 0, "Bold", "Default" )
有效!