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がtrueであるかどうかを確認し、trueの場合、Fields!effectivedate.Value(IIf(Fields!Freeze.Value、Fields!effectivedate.Value)を表示します。

B. 2番目の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

要件を理解しているので、2つの日付の日数の差をチェックし、差が30日未満の場合は、effectiveDateを表示する別のIIf()セクションを追加する必要があります。

=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を生成する必要があります。

FreezeDateすべてをまとめて、との間の日差を計算していますeffectiveDate。その値が30を超える場合は、を表示しeffectiveDateます。それ以外の場合は、を表示しますFreezeDate

希望する結果を得るには、いろいろと試してみる必要があるかもしれません。あなたの論理のあなたの英語の説明は素晴らしかった。その状況下で私ができる最善を尽くした。

于 2013-01-07T14:00:24.713 に答える