Выражение SSRS для DateAdd, возвращающее значение и пробел

#reporting-services #expression #ssrs-2008 #calculated-field

#службы reporting-services #выражение #ssrs-2008 #вычисляемое поле

Вопрос:

введите описание изображения здесь

Всем привет, у меня есть выражение в SSRS, которое вычисляет дату выполнения из последнего теста соответствия. Данные верны, если в последнем тесте соответствия указана дата. Однако, если последний тест соответствия равен нулю или пуст, он выдает ошибку «########» ( оно предполагает возврат пустого значения). Как я могу исправить это выражение?

 =IIF(IsNothing(Fields!LastFitTest.Value) = True,"",DateAdd(DateInterval.Year,1,Fields!LastFitTest.Value))
  

Ответ №1:

Попробуйте это…

 =IIF(
    IsNothing(Fields!LastFitTest.Value),
    "",
    DateAdd(DateInterval.Year,1,IIF(IsNothing(Fields!LastFitTest.Value), '1900-01-01', Fields!LastFitTest.Value))
    )
  

Проблема заключалась в том, что IIF всегда оценивает как истинное, так и ложное условие, поэтому, когда у вас не было значения в LastFitTest , ложная сторона не могла оценить, даже если она никогда не будет использоваться.

Все, что мы здесь сделали, это сделали так, чтобы дата, которая обрабатывается в функции DateDiff, всегда возвращала действительную дату. 1 января 1900 года ничего не значит, вы можете указать любую дату, которая вам нравится, поскольку она никогда не будет использована в конечном результате.

Единственным другим изменением было удаление = True . IsNothing возвращает True / False, поэтому вам не нужно явно указывать =True.