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

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

每当MyDate为null时,都会给我一个“#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

@马特·汉密尔顿: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"))

关于vb.net - 在SSRS中执行.AddDays()之前如何检查空值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/136770/

10-11 01:33