【问题标题】:Is it possible to use DateDiff in an IIF statement?是否可以在 IIF 语句中使用 DateDiff?
【发布时间】:2016-11-24 15:31:53
【问题描述】:

我已经搜索过寻求帮助,但找不到我真正需要的东西。 我正在尝试查找两个日期字段之间的总天数,但是启动日期字段可能来自两个不同的字段,例如开始日期或修改的开始日期。结束日期将始终是同一个字段。

大多数时候不会有修改的开始日期,但我需要一种方法来满足修改开始日期的情况。 我尝试了以下

=IIF(Fields!AmendedStartDate.Value is nothing, DateDiff("d",Fields!StartDate.Value,Fields!EndDate.Value, DateDiff("d",Fields!AmendedStartDate.Value, Fields!EndDate.Value)))

我得到一个错误运行运行这个。

我对 Report Builder/SSRS 还很陌生,所以我不确定我所要求的是否可行。

感谢您花时间查看。

【问题讨论】:

    标签: reporting-services ssrs-2008 reportbuilder3.0


    【解决方案1】:

    你不能使用Fields!FieldName.Value is nothing,而是需要IsNothing(Fields!FieldName.Value)

    =IIf(IsNothing(Fields!AmendedStartDate.Value),DateDiff("d",Fields!StartDate.Value,Fields!EndDate.Value),DateDiff("d",Fields!AmendedStartDate.Value,Fields!EndDate.Value))

    或者,您可以使用类似的表达式创建一个计算字段(例如,StartDateToUse):

    =IIf(IsNothing(Fields!AmendedStartDate.Value),Fields!StartDate.Value,Fields!AmendedStartDate.Value)

    然后在你的主表达式中引用这个字段来得到你想要的结果:

    =DateDiff("d",Fields!StartDateToUse.Value,Fields!EndDate.Value)

    【讨论】:

    • 嗨,我选择了你的另一种表达方式,这正是我所需要的。非常感谢。
    • 没问题,感谢您的回答。我也花了一些时间来了解报表生成器中可用的功能(而且我每天都在学习!)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 2014-09-10
    相关资源
    最近更新 更多