【问题标题】:SSRS IIF Date evaluationSSRS IIF 日期评估
【发布时间】:2013-01-07 13:34:12
【问题描述】:

我有以下代码

=IIf(Fields!Freeze.Value, Fields!effectivedate.Value, IIF(Month(Fields!effectivedate.Value) <> Month(Now()), Format(Now(), “MM/dd/yyyy”) , Fields!effectivedate.Value))

A.在第一个 IIF 语句中,我检查 Fields!Freeze.Value 是否为真,如果为真,则显示 Fields!effectivedate.Value (IIf(Fields!Freeze.Value, Fields!effectivedate.Value)

B.在第二个 IIF statemenet 中,我检查 Fields! Effectivedate.Value 是否为当前月份,如果是当前月份,则显示 Fields! Effectivedate.Value,如果不是当前月份,则显示当前日期。

我需要以下方面的帮助。

在第一个 IIF 语句中,>>> IIf(Fields!Freeze.Value, Fields!effectivedate.Value, 我想评估一个新值 Fields!FreezeDate.value

  1. 如果 Fields!Freeze.Value = true,则检查 Fields!effectivedate.Value 是否比 Fields!FreezeDate.value 少 30 天或更长时间。 A. 如果它的 29 天或少于 Fields!FreezeDate.value 则显示 Fields!effectivedate.Value B. 如果它比 Fields!FreezeDate.value 少 30 天或更长时间,则显示 Fields!FreezeDate.value

示例 1

 Fields!FreezeDate.value  = '12/30/2012'
 Fields!effectivedate.Value = '11/15/2010'


 then Display the Fields!FreezeDate.value

示例 2

 Fields!FreezeDate.value  = '12/30/2012'
 Fields!effectivedate.Value = '12/15/2010'


 then Display the Fields!effectivedate.Value

如何在 SSRS 代码中编写此代码?

如果我未能正确解释某些事情,请要求进一步澄清。

【问题讨论】:

    标签: reporting-services reportingservices-2005


    【解决方案1】:

    据我了解,您需要添加另一个 IIf() 部分来检查两个日期之间的天数差异,如果差异小于 30 天,则显示有效日期:

    =IIf
    (
      Fields!Freeze.Value
      , IIF
      (
        DateDiff(DateInterval.Day, Fields!effectiveDate.Value, Fields!FreezeDate.Value) < 30
        , Fields!effectiveDate.Value
        , Fields!FreezeDate.Value
      )
      , IIF
      (
        Month(Fields!effectivedate.Value) <> Month(Now())
        , Format(Now(), “MM/dd/yyyy”)
        , Fields!effectivedate.Value
      )
    )
    

    【讨论】:

      【解决方案2】:

      我怀疑你缺少的是 DATEDIFF 函数的知识。

      http://msdn.microsoft.com/en-us/library/aa337092%28v=sql.90%29.aspx

      IIF(
        DATEDIFF(DAY, Fields!FreezeDate.Value, Fields!effectiveDate.Value) => 30,
        Fields!FreezeDate.Value, 
        Fields!effectiveDate.Value )
      

      以上,我们使用的是DATEDIFF

      第一个参数是我们想要测量两者之间差异的时间测量。天。

      例子:-

      DATEDIFF(DAY, '2013-01-01', '2013-01-15') 应该产生 14。

      总而言之,我们正在计算FreezeDateeffectiveDate 之间的天差。当该值超过 30 时,显示 effectiveDate。否则,显示FreezeDate

      您可能需要尝试一下才能获得所需的结果。你对你的逻辑的英文描述不是很好。在这种情况下尽我所能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-20
        相关资源
        最近更新 更多