У меня проблема с выражениями в отчетах. Я окрашиваю фон текстового поля в таблице в зависимости от значения в нем. Текст в поле относится к резервным копиям для SQL Server. Значением является либо дата, либо текст «Пока не принято». Если дата более 2 дней, я хочу, чтобы фон был желтым. Если возраст более недели или значение даты «Еще не получено», я хочу, чтобы фон был красным. В противном случае он будет зеленым.
Проблема, с которой я столкнулся с тех пор, как начал работать с отчетами по SSRS (несколько недель назад), заключается в том, что мои выражения, кажется, полностью оценены. Для оператора IF будут оцениваться как его истинные, так и ложные значения, даже если будет использовано только одно из них.
Это становится проблемой, потому что "Пока еще не принято" явно не дата, и для работы с датами мне нужно преобразовать строку даты в дату. Вот код, который у меня есть на данный момент:
=IIF(Fields!LastBackUpTaken.Value = "Not Yet Taken","Red", IIF( IsDate(Fields!LastBackUpTaken.Value) = true,
IIF( CDate(Fields!LastBackUpTaken.Value).AddDays(Parameters!DaysTillExpiry.Value).CompareTo(NOW()) = 1,
"GreenYellow",
IIF( CDate(Fields!LastBackUpTaken.Value).AddDays(7).CompareTo(NOW()) = 1, "Yellow", "Red")),
"Red"))
Таким образом, в основном выражение гласит: «Если LastBackUpTaken.Value =« Еще не принято », возвращает красный цвет. Если это не« Еще не принято », проверьте, является ли строка датой. Если это не так не дата, верните красный цвет. Если это дата, сделайте расчеты и верните соответствующий цвет.
Это выражение работает для всех текстовых полей, для которых в качестве текста не указано "Пока не принято". Для полей, для которых в качестве текста указано «Пока не принято», цвет не установлен.
РЕДАКТИРОВАТЬ: я также получаю ошибку преобразования, которую я забыл упомянуть, всякий раз, когда текст "Еще не принято"
Есть идеи?