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" )

有效!