Как проверить наличие нулевых значений перед выполнением.AddDays() в SSRS?

StackOverflow https://stackoverflow.com/questions/136770

Вопрос

У меня есть следующее значение для моего текстового поля в отчете 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"))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top