我在SSRS报告中的文本框值为:

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

它给了我一个“#Error”每次MyDate为空。

我如何解决这个问题?

更新:

我写了这个自定义函数,它摆脱了错误,但是在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)

有帮助吗?

解决方案

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

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

=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy"))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top