当前位置:  开发笔记 > 后端 > 正文

如何在SSRS中执行.AddDays()之前检查空值?

如何解决《如何在SSRS中执行.AddDays()之前检查空值?》经验,为你挑选了1个好方法。

我在SSRS报告中将以下内容作为文本框的值:

   =iif(IsNothing(Fields!MyDate.Value), "", Format(Fields!MyDate.Value.AddDays(30), "MMMM dd, yyyy"))

每次MyDate为null时,它都会给我一个"#Error".

我该如何解决这个问题?

更新:

我写了这个自定义函数,它摆脱了错误,但是在null日期通过时返回0001年1月31日.

Public Shared Function NewDate(myDate as DateTime, days as integer) AS string
IF ISNOTHING(myDate) OR ISDBNULL(myDate) Then
    NewDate = "        "
ELSE
    NewDate = Format(myDate.AddDays(days), "MMMM dd, yyyy")
END IF
End Function 

@Matt Hamilton:DateAdd("d",30,Fields!MyDate.Value)



1> Matt Hamilto..:

当然,问题在于VB的IIF语句无论结果如何都会评估双方.因此,即使您的字段为空,它仍在评估"Value.DateAdd"调用.

如果我没记错的话,SSRS有自己的"DateAdd"功能,您可以使用它.所以你可以这样做(检查文档'因为这是来自内存):

=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy"))

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有