【问题标题】:How to check for null values before doing .AddDays() in SSRS?如何在 SSRS 中执行 .AddDays() 之前检查空值?
【发布时间】:2008-09-25 23:07:09
【问题描述】:

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)

【问题讨论】:

  • 为什么一定要内联?
  • 因为直到 10 分钟前我还不知道 SSRS 中的“自定义代码”:)

标签: vb.net reporting-services ssrs-2008-r2


【解决方案1】:

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

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

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

【讨论】:

  • 切换函数中的参数,30应该是#2 thanx
猜你喜欢
  • 2019-05-25
  • 2011-06-24
  • 2013-01-27
  • 2019-12-27
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
相关资源
最近更新 更多