Как проверить наличие нулевых значений перед выполнением.AddDays() в SSRS?
-
02-07-2019 - |
Вопрос
У меня есть следующее значение для моего текстового поля в отчете SSRS:
=iif(IsNothing(Fields!MyDate.Value), "", Format(Fields!MyDate.Value.AddDays(30), "MMMM dd, yyyy"))
Это выдает мне "#Error" каждый раз, когда myDate имеет значение null.
Как мне обойти это?
Обновить:
я написал эту пользовательскую функцию, она избавилась от ошибки, но возвращает 31 января 0001 года, когда передается нулевая дата.
Public Shared Function NewDate(myDate as DateTime, days as integer) AS string
IF ISNOTHING(myDate) OR ISDBNULL(myDate) Then
NewDate = " "
ELSE
NewDate = Format(myDate.AddDays(days), "MMMM dd, yyyy")
END IF
End Function
@Мэтт Гамильтон:DateAdd("d", 30, Поля!myDate.Значение)
Решение
Проблема, конечно, в том, что заявление IIF VB оценивает обе стороны независимо от результата.Таким образом, даже если ваше поле равно null, оно все равно вычисляет вызов "Value.DateAdd".
Если я правильно помню, SSRS имеет свою собственную функцию "DateAdd", которую вы можете использовать вместо нее.Таким образом, вы можете сделать что-то вроде этого (проверьте документацию, потому что это из памяти):
=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy"))