SSRS中日期比较时空日期导致背景色不符合预期问题求助
解决SSRS/报表生成器中日期为空时单元格背景色异常问题
你的问题出在自定义函数的参数类型上:Date是值类型,无法存储空值。当数据集返回空日期(DBNull)时,SSRS会自动将其转换为Date类型的默认值(如0001-01-01),而非Nothing,这就导致IsNothing(FirstDate)的判断永远为False,跳过了白色背景的逻辑,直接进入日期比较——默认日期必然小于等于正常日期,所以显示红色。
方案一:修改自定义函数为可空日期类型
把函数参数改为Nullable(Of Date)(可空日期类型),这样就能正确识别空值:
Function BackgroundColorFromDates(byVal FirstDate as Nullable(Of Date), byVal SecondDate as Nullable(Of Date) ) As String return IIF( Not FirstDate.HasValue Or Not SecondDate.HasValue, "White", IIF( FirstDate.Value <= SecondDate.Value, "Red", "Green") ) End Function
- 用
HasValue判断参数是否为空日期 - 用
Value获取非空时的实际日期值进行比较
方案二:直接在背景色表达式中写逻辑(无需自定义函数)
跳过自定义函数,直接在单元格的背景色表达式中编写逻辑,避免类型转换问题:
=IIF(IsNothing(Fields!Date1.Value) Or IsNothing(Fields!Date2.Value), "White", IIF(Fields!Date1.Value <= Fields!Date2.Value, "Red", "Green") )
这种方式直接判断原始字段值,IsNothing能正确识别数据集返回的空值(DBNull),无需经过值类型转换。
内容的提问来源于stack exchange,提问作者Kemu79
相关产品推荐
相关产品推荐

