此刻我有点难过。我创建了一个表达式,用于计算两个日期之间的工作日,并且工作正常。
=(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 :(得分: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)
应该做的伎俩。如果有可能为null,您可能还需要为其他值重复此过程。