Как проверить нулевые значения, прежде чем делать .AddDays () в SSRS? - PullRequest
5 голосов
/ 26 сентября 2008

У меня есть следующее значение для моего текстового поля в отчете SSRS:

   =iif(IsNothing(Fields!MyDate.Value), "", Format(Fields!MyDate.Value.AddDays(30), "MMMM dd, yyyy"))

Это дает мне "#Error" каждый раз, когда MyDate имеет значение null.

Как мне обойти это?

UPDATE:

Я написал эту пользовательскую функцию, она избавилась от ошибки, но возвращает 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.Value)

1 Ответ

6 голосов
/ 26 сентября 2008

Проблема, конечно же, заключается в том, что в заявлении VB по IIF оцениваются обе стороны независимо от результата. Таким образом, даже если ваше поле пустое, оно все равно оценивает вызов Value.DateAdd.

Если я правильно помню, у SSRS есть своя собственная функция DateAdd, которую вы можете использовать вместо нее. Таким образом, вы можете сделать что-то вроде этого (проверьте документацию, потому что это из памяти):

=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...