сумма, основанная на цвете фона ssrs - PullRequest
0 голосов
/ 14 мая 2019

В моей таблице из 20 записей я получаю 4 записи "Red" на основе выражения ниже:

=Switch(DateDiff(DateInterval.Hour, Fields!SLA.Value, Now())<=72,"White",Fields!SLA.Value<now(),"Red",true,"White")

enter image description here

Я хотел бы суммировать "count_of_value" на основе фонового цвета "RED".

Вот что я пытаюсь. Тем не менее, он показывает ошибку.

="The number is " & IIF("Red",Sum(Fields!count_of_value.Value, "DataSet1"),'') & "."

and 

 ="The number is " & Sum(IIF("Red",Sum(Fields!count_of_value.Value, "DataSet1"),'')) & "."

Я бы хотел достичь 2 вещей:

Из 1-го столбца я хотел бы получить последнюю дату цвета «КРАСНЫЙ». Например, в этом случае 02/05/2019.

Из 2-го столбца я хотел бы получить сумму чисел, имеющих цвет «КРАСНЫЙ». Например, в этом случае 214519

Что я делаю? Как этого добиться? Спасибо

Ответы [ 3 ]

1 голос
/ 14 мая 2019

Похоже, проблема XY здесь. Ваше выражение окрашивает клетки в соответствии с оператором SWITCH. Чтобы решить проблему суммирования, вам нужно использовать тот же условный оператор, который вы используете для окрашивания ячеек. В основном, нужное вам выражение должно быть следующим.

= SUM(IIF(Fields!SLA.Value<now(), Fields!count_of_value.Value, 0), "DataSet1")

Это выражение должно изолировать те же поля, которые SWITCH окрашивает в красный цвет, суммировать их и добавлять ноль, если они не имеют значения true. Поскольку в вашем комментарии к другому ответу говорилось, что вы получили ошибку, указывающую на недостаточную область действия, вам необходимо включить имя набора данных в функцию SUM.

Что касается получения последнего значения даты из другого столбца, вы должны просто иметь возможность использовать аналогичное выражение, но с использованием функции MAX.

=MAX(IIF(Fields!SLA.Value<now(), Fields!SLA.Value, Nothing), "DataSet1")
0 голосов
/ 14 мая 2019

Возможно, я упростил вашу формулировку проблемы, но я попытался использовать фиктивные данные на своем локальном компьютере.

enter image description here

=DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now)

Новый временный столбец для перехватачисло

=IIF(DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now)<=72,0,
IIF(Fields!SLAValue.Value<now,DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now),0))

Теперь столбец

=now

Цветовое выражение столбца

=IIF(DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now)<=72,"White",
IIF(Fields!SLAValue.Value<now,"Red","white"))

Last Count_Value Expression

=Sum(
IIF(DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now)<=72,0,
IIF(Fields!SLAValue.Value<now,DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now),0)))
0 голосов
/ 14 мая 2019

Ваше утверждение IIF в основном просто говорит: "Если 'Red' = True", то всегда будет возвращаться false.

Вам нужно сравнить его с «ячейкой», где у вас есть свое цветовое выражение.

Если эта ячейка называется myTextBox, тогда ваше SUM-выражение будет выглядеть примерно так (упрощенно)

=SUM(
    IIF(ReportItems!myTextBox.Value = "Red", Fields!count_of_value.Value, 0)
    )

В качестве альтернативы вы можете повторить все цветовое выражение в своем выражении IIF.

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

...