2015-12-11 2 views
0

Im немного в тупике. Я создал выражение, которое вычисляет рабочие дни между двумя датами, которые отлично работают.SSRS удаляет #ERROR из результатов выражения для рабочих дней

=(DateDiff(DateInterval.day,Fields!TCY_START_DATE.Value, 
Fields!TCY_TENANCY_VISIT_DATE.Value)) 
- (DateDiff(DateInterval.WeekOfYear,Fields!TCY_START_DATE.Value, 
Fields!TCY_TENANCY_VISIT_DATE.Value)*2) 
- IIF(Weekday(Fields!TCY_START_DATE.Value,1) = 1,1,0) 
- IIF(Weekday(Fields!TCY_START_DATE.Value,1) = 7,1,0) 
- IIF(Weekday(Fields!TCY_TENANCY_VISIT_DATE.Value,1) = 1,1,0) 
- IIF(Weekday(Fields!TCY_TENANCY_VISIT_DATE.Value,1) = 7,1,0) 

Проблема у меня в том, что если TCY_TENANCY_VISIT_DATE является пустым, то результаты этого выражения #ERROR.

Мне нужно настроить это выражение так будет в основном говорят, если дата визита является пустой, то не показывает ничего, но все же включить его в мою рабочие дни формулы

ответ

0

Это происходит потому, что SSRS оценивает все выражение, прежде чем он пытается найти фактический путь для значений, которые он имеет. Поэтому он попытается найти «День недели полей»! TCY_TENANCY_VISIT_DATE.Value, даже если он пуст, и поэтому выдает ошибку.

Решение этого вопроса - это все возможные пустые или пустые значения с самого начала. В этом случае изменения линии

IIF(Weekday(Fields!TCY_TENANCY_VISIT_DATE.Value,1) = 7,1,0) 

в

iif(iif(isnothing(Fields!TCY_TENANCY_VISIT_DATE.Value), 
     "", 
     Fields!TCY_TENANCY_VISIT_DATE.Value), 1) = 7, 
    1, 
    0) 

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

+0

Спасибо. Я пробовал это, но он не похож на синтаксис, как в обычном красном подчеркивании, поэтому не уверен, что мне нужно поиграть с скобками. –

Смежные вопросы