SSRS中设置默认日期为下一个工作日的问题求助
解决SSRS报表默认日期设置为下一个工作日的问题
你遇到的问题根源在于原表达式的判断条件逻辑不对,没精准匹配到周五的情况。咱们一步步来修正:
原表达式的问题
原表达式= IIF(Weekday(Today()) <=3, DateAdd("d", 1, Today()), DateAdd("d", 3, Today()))的判断条件是周几数值≤3时加1天,但SSRS里Weekday()函数默认以周日为一周的第一天(周日=1,周一=2,周二=3,周三=4,周四=5,周五=6,周六=7)。这就导致周三到周六都会触发加3天的逻辑,完全不符合你的需求。
正确的表达式
根据你的规则(除周五外工作日加1天,周五加3天),我们需要精准判断当前是否为周五。为了避免默认周起始日的歧义,建议明确指定一周的第一天为周一,这样逻辑更清晰:
= IIF(Weekday(Today(), vbMonday) = 5, DateAdd("d", 3, Today()), DateAdd("d", 1, Today()))
逻辑解释
Weekday(Today(), vbMonday):指定周一为一周的第一天,此时周一=1、周二=2、周三=3、周四=4、周五=5、周六=6、周日=7- 当返回值为5时(即周五),执行
DateAdd("d", 3, Today()),跳过周六周日,直接到下周一 - 其他工作日(周一到周四)执行
DateAdd("d", 1, Today()),返回第二天
验证你的示例
- 2018/05/18(周五):
Weekday返回5,加3天得到2018/05/21,符合预期 - 2018/05/21(周一):
Weekday返回1,加1天得到2018/05/22,符合预期
如果你的环境默认周起始日就是周一,也可以用简化版(但还是推荐指定参数更稳妥):
= IIF(Weekday(Today()) = 5, DateAdd("d", 3, Today()), DateAdd("d", 1, Today()))
内容的提问来源于stack exchange,提问作者A.Goutam
相关产品推荐
相关产品推荐

