SSRS 2008可选日期参数为空时无数据返回问题求助
SSRS 2008可选日期参数NULL无数据问题解决办法
直接修改数据集过滤器的逻辑,兼容参数空值的情况,有两种可行方案:
方案一:用极端日期替代空值
针对两个日期参数分别设置过滤器:
CreationDateFROM参数过滤规则:- 表达式:
=Fields!CreationDate.Value - 运算符选
>= - 值输入:
=IIF(IsNothing(Parameters!CreationDateFROM.Value), DateAdd("yyyy", -100, Today()), Parameters!CreationDateFROM.Value)
原理:参数为空时,用100年前的日期当起始值,确保所有数据都满足大于等于这个条件。
- 表达式:
CreationDateTO参数过滤规则:- 表达式:
=Fields!CreationDate.Value - 运算符选
<= - 值输入:
=IIF(IsNothing(Parameters!CreationDateTO.Value), DateAdd("yyyy", 100, Today()), Parameters!CreationDateTO.Value)
原理:参数为空时,用100年后的日期当结束值,确保所有数据都满足小于等于这个条件。
- 表达式:
方案二:空值直接跳过过滤
针对每个参数设置布尔判断的过滤器:
CreationDateFROM参数过滤规则:- 表达式:
=IIF(IsNothing(Parameters!CreationDateFROM.Value), True, Fields!CreationDate.Value >= Parameters!CreationDateFROM.Value) - 运算符选
= - 值输入:
=True
原理:参数为空时直接返回True,相当于不启用这个过滤条件;参数有值时才校验日期是否大于等于参数值。
- 表达式:
CreationDateTO参数过滤规则:- 表达式:
=IIF(IsNothing(Parameters!CreationDateTO.Value), True, Fields!CreationDate.Value <= Parameters!CreationDateTO.Value) - 运算符选
= - 值输入:
=True
原理:和上面同理,参数为空时跳过该条件,有值时才校验日期范围。
- 表达式:
两种方案都能保留报表内参数的可选功能,后续加其他参数也可以用同样的逻辑处理空值情况。
内容的提问来源于stack exchange,提问作者Marco Onnis
相关产品推荐
相关产品推荐

