SSRS 条件格式化

5

我正在处理 SSRS 排名报告,其中排名第一应该有绿色背景,而最后一名应该有红色背景。

以下是示例:

SSRS Conditional Formatting

我尝试使用自定义代码,但以下代码并没有起作用:
以下是使用的 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

3个回答

3
您可以在文本框中的一个表达式内完成此操作。
将文本框的BackgroundColour设置为。
=iif(Fields!myRank.Value = min(Fields!myRank.Value, "DataSet3"),
    "Green",
    iif(Fields!myRank.Value = max(Fields!myRank.Value, "DataSet3"),
        "Red",
        "White"
    )
 )

将会给出结果。

enter image description here

这是因为您正在将myRank的当前值与数据集DataSet3myRank的最大值和最小值进行比较。

请告诉我这是否解决了您的问题,或者您需要进一步的帮助。


谢谢,它可以工作了。我唯一的担心是性能问题,因为我需要对40多个属性进行条件格式设置,但我会告诉你我的进展情况。 - user2827587
1
另一种选项是在数据源中设置颜色的值。例如,如果一个 SQL 查询或视图检查 'myRank' 的值并返回一个字符串值,该值是颜色名称,则将列命名为 BGColour。将该字符串值分配给表格中单元格的背景颜色属性。 - SQLBobScot

3

最终我选择使用函数调用,这样我可以在一个地方灵活更改颜色,而不是在所有列中更改表达式(如果业务决定更改颜色)。我的代码如下:

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

如果您需要执行多个更新,因为rdl文件实际上是XML格式的,您可以在文本编辑器中打开它,并进行简单的查找和替换以更新所有表达式中的颜色。 - Jonnus

0
我在“字体/字重”属性中使用了这个简单的表达式,以便将所有非零值切换为粗体。
=iif(Fields!ingresos.Value > 0, "Bold", "Default" )

它运行正常!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接