5

我在 SSRS 报告中的文本框具有以下值:

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

每次 MyDate 为空时,它都会给我一个“#Error”。

我该如何解决这个问题?

更新:

我编写了这个自定义函数,它摆脱了错误,但在传递空日期时返回 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)

4

1 回答 1

6

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

如果我没记错的话,SSRS 有它自己的“DateAdd”函数,你可以使用它。所以你可以做这样的事情(检查文档'因为这是来自记忆):

=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy"))
于 2008-09-25T23:25:42.630 回答