2

Я работаю над SSRS Ranking report, где Ранг 1 должен иметь фон Green и last Rank должен иметь фон Red.Условное форматирование 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

ответ

1

Наконец-то я получил вызов функции, поэтому я получил возможность изменять цвет в 1 месте вместо изменения выражения во всех coloumns (если бизнес решает изменить цвет). И мой код, как показано ниже

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

Для получения информации, если вам нужно выполнить несколько обновлений, так как файл rdl - это фактически XML, вы можете открыть его в текстовом редакторе и выполнить простой поиск и замену, чтобы обновить цвета во всех выражениях – Jonnus

1

Вы можете сделать это из одного выражения в текстовом поле.

Установите 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 против максимальных и минимальных значений myRank во всем вашем наборе данных DataSet3.

Пожалуйста, дайте мне знать, если это решит вашу проблему или вам потребуется дополнительная помощь.

+0

Благодаря она работает, моя единственная забота является производительность, так как мне нужно сделать условное форматирование для 40+ атрибутов, но даст вам знать, как я иду – user2827587

+1

Другой вариант - установить значение цвета в источнике данных. Если, например, SQL-запрос или представление проверяет значение «myRank» и возвращает строковое значение, которое является именем цвета, вызовите столбец BGColour. Назначьте значение строки атрибуту цвета фона для ячейки в tablix. – BobF