Выражение цвета фона SSRS на основе значения даты

Вот моя проблема: у меня есть таблица в SSRS, которую я создал, с полем срока выполнения (RegulatoryDateDecisionDue). На основе этого поля даты мне нужно изменить цвета строк, если сегодняшняя дата превышает установленный срок, поле должно быть красным. Если количество часов меньше или равно 72 часам с сегодняшней даты до срока выполнения (в основном, как обратный отсчет до его срока), строки должны быть оранжевыми, в противном случае строки должны быть белыми.

Вот выражение, которое я написал, но у меня проблема, я получаю сообщение об ошибке и понимаю, что я делаю неправильно, или нужно ли мне делать это по-другому? Любая помощь приветствуется.

=IIF((now() > Fields!RegulatoryDateDecisionDue.Value), "Red", IIF(((DateDiff(DateInterval.Hour, Fields!RegulatoryDateDecisionDue.Value, Now()) <= "72"), "Orange", "White")))

person ItalianStallion4215    schedule 05.08.2016    source источник
comment
в вашем выражении я думаю, что 72 неверно, попробуйте вместо 72, которое считается целым числом.   -  person Sanjay Radadiya    schedule 05.08.2016


Ответы (2)


Пытаться:

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

Лучше использовать Switch для нескольких условий.

Позвольте мне знать, если это помогает.

person alejandro zuleta    schedule 05.08.2016
comment
Лучше, теперь по крайней мере я вижу апельсин, но по какой-то причине я вижу оранжевый на полях, которые находятся более чем в 72 часах от срока сдачи. - person ItalianStallion4215; 05.08.2016
comment
72 часа + строки должны быть белыми, 72 часа - строки должны быть оранжевыми, а все, что просрочено, должно быть красным. - person ItalianStallion4215; 05.08.2016
comment
@ ItalianStallion4215, попробуйте обновленное выражение. Я изменил порядок условий, поэтому сначала оценивается условие now-date ‹= 72, а затем now› date. - person alejandro zuleta; 05.08.2016
comment
Все еще не работает, я получаю только красный и оранжевый, но не белый. Это часть моей проблемы. - person ItalianStallion4215; 05.08.2016
comment
@ ItalianStallion4215, в каком состоянии белый цвет? Обратите внимание, что выражение вернет белый цвет, если любое другое условие не будет оценено как True. Выражение говорит, что if now-date ‹= 72, то оранжевый, else if date‹ сейчас, то красный, иначе белый. Он вернет Белый, когда сейчас ‹дата, это ожидается? - person alejandro zuleta; 05.08.2016
comment
поэтому для белого цвета, если количество часов до срока превышает 72 часа, он должен быть белым. Таким образом, количество часов между моментом () и сроком выполнения превышает 72. - person ItalianStallion4215; 05.08.2016
comment
Получил, что логика была обратной. - Спасибо за помощь. Очень признателен. - person ItalianStallion4215; 05.08.2016
comment
= Switch (Поля! RegulatoryDateDecisionDue.Value ‹сейчас (), Красный, DateDiff (DateInterval.Hour, Now (), Fields! RegulatoryDateDecisionDue.Value)‹ = 72, Оранжевый, true, белый) - person ItalianStallion4215; 05.08.2016

Некоторые вещи, которые стоит попробовать:

  • Используйте переключатель вместо iif, чтобы лучше читать
  • используйте "h" вместо DateInterval.Hour
  • напишите 72 вместо "72"
person NdsAerith    schedule 05.08.2016