Как выполнить цветовое форматирование в сводном отчете с детализацией

#reporting-services

#службы отчетов

Вопрос:

Я создал детализированный отчет в SSRS 2008 с одной родительской группой и 4 дочерними группами, каждое групповое поле объединяет значения в сводном столбце.Я должен выполнить условное форматирование, чтобы изменить цвет фона сводного поля, если конкретное совокупное значение превышает входное значение в каждом поле с детализацией.

Я попробовал несколько выражений с условием ‘IIF’ и ‘SWITCH’, чтобы изменить цвет фона в сводном поле в каждом поле детализации.

 =switch(
 Fields!CIRCLE.Value,"DataSet1" AND (fields!TOTAL.Value>30000,"DataSet1"),"Red",

       (Fields!ZONE.Value,"DataSet1" AND (fields!TOTAL.Value>100,"DataSet1"),"Red",

        (Fields!CLUSTER.Value,"DataSet1" AND (fields!TOTAL.Value>5000,"DataSet1"),"Red",

        (Fields!NODE.Value,"DataSet1" AND (fields!TOTAL.Value>3000,"DataSet1"),"Red","White"
))))
  

Я хочу, чтобы сводное поле Hour с суммой в виде агрегатов стало красным на уровне зоны уровня круга, на уровне кластера и на уровне узла, например, если поле Sum под сводным столбцом равно 700 за 3-й час и превышает 300, тогда значение на 3-м часе должно стать красным на уровне круга.

Комментарии:

1. Не могли бы вы опубликовать пример отчета с данными, чтобы прояснить, с чем именно вам действительно нужна помощь?

2. Набор данных в отчете SSRS — это круг, зона, кластер, узел, дата, час, общее количество, дата родительской группы, дочерняя группа, круг, зона, кластер, узел, сводное поле, час (0-23), совокупная сумма сводного поля (итого). Существует поле строки и поле столбца Total, которое вычисляет общую сумму всех полей с детализацией.

Ответ №1:

Попробуйте этот метод:

 =switch( Fields!CIRCLE.Value > 30000 AND Fields!TOTAL.Value >30000,"Red",
         Fields!ZONE.Value> 100 AND Fields!TOTAL.Value > 100,"Red",
         Fields!CLUSTER.Value > 5000 AND Fields!TOTAL.Value > 5000,"Red",
         Fields!NODE.Value > 3000 AND Fields!TOTAL.Value > 3000 ,"Red")
  

Комментарии:

1. После применения приведенного выше выражения я сталкиваюсь с предупреждением»[rsRuntimeErrorInExpression] Выражение backgroundColor для текстового поля ‘Textbox30_InAutoSubtotal1’ содержит ошибку: строка ввода была в неправильном формате. Предварительный просмотр завершен — 0 ошибок, 1 предупреждение ‘

2. возможно, значение данных в КРУГЕ, ЗОНЕ, КЛАСТЕРЕ или УЗЛЕ может не быть «целым числом»?

3. Это всегда целочисленное значение.

Ответ №2:

введите описание изображения здесь@Aditi Singh мы на правильном пути, взгляните на изображения ниже, дайте мне знать ваши мысли:

введите описание изображения здесь

Комментарии:

1. Действительно, так и есть, но здесь выражение предназначено для всех кругов за определенный час, я просто хочу наоборот, я хочу для одного круга вдоль всех часов.

2. И я также должен иметь только четыре критерия, т.Е. Для круга, зоны, кластера, узла, и все значения, превышающие критерии для определенного круга за 24 часа, должны быть отформатированы так же, как и для зоны, кластера и узла.

3. например, на приведенном выше скриншоте для circle значение AR за 1-й час также должно быть отформатировано так, как оно больше 300, что является критерием для общего круга.

4. в примере, который я показал, выражение для столбца часов 3 или 4, было бы просто вопросом редактирования выражения, чтобы включить столбец часов 1

5. Но я хочу, чтобы итоговая строка была отформатирована не по столбцам.

Ответ №3:

@SuperSimmer44 Ниже приведена ссылка на желаемый результат — примерныйсценарийотчета с детализацией: Круг> 4000 (красный), зона> 3000 (красный), кластер>500 (красный)

Ответ №4:

Попробуйте этот метод (вам нужно будет увеличить значение часа до 10 ):

 =switch(Fields!HOUR1.Value = "1" and Fields!TOTAL.Value >= "100", "RED",
        Fields!HOUR1.Value = "2" and Fields!TOTAL.Value >= "200", "RED",
        Fields!HOUR1.Value = "3" and Fields!TOTAL.Value >= "300", "RED",
        Fields!HOUR1.Value = "4" and Fields!TOTAL.Value >= "400", "RED",
        Fields!HOUR1.Value = "5" and Fields!TOTAL.Value >= "500", "RED",
        Fields!HOUR1.Value = "6" and Fields!TOTAL.Value >= "600", "RED",
        Fields!HOUR1.Value = "7" and Fields!TOTAL.Value >= "700", "RED",
        Fields!HOUR1.Value = "8" and Fields!TOTAL.Value >= "800", "RED",
        Fields!HOUR1.Value = "9" and Fields!TOTAL.Value >= "900", "RED",
        )
  

Комментарии:

1. Это означает, что я продлю его на 24 часа, т.е. (0-23)

2. да, продлить на 24 часа, я немного не уверен в именах полей, которые могут потребоваться для их изменения, а также в критериях для каждого значения переключателя…..

3. Я думаю, это не даст мне желаемого результата, поскольку для всех полей, например, на уровне круга, существуют фиксированные критерии, например, если значение сводного столбца превышает 300, все значения, превышающие 300, должны стать красными через 0-23 часа.