3

我有以下代码

=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 语句中,我检查 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. 如果其 30 天或更短于 Fields!FreezeDate.value 则显示 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 代码中编写此代码?

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

4

2 回答 2

2

据我了解要求,您需要添加另一个 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
  )
)
于 2013-01-07T13:59:55.647 回答
0

我怀疑您缺少的是对该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.

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

于 2013-01-07T14:00:24.713 回答