2013-01-07 93 views
2

我有以下代碼SSRS IIF日期評價

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

A.在第一個IIF語句我檢查一下,看看是否領域!Freeze.Value是真實的,如果它的真實然後顯示的字段!EFFECTIVEDATE。值(IIf(Fields!Freeze.Value,Fields!effectivedate.Value)

B.在第二個IIF statemenet中,我檢查Fields!effectivedate.Value是否是當前月份,如果它是當前月份,則它顯示Fields!effectivedate.Value,如果不是當前月份,則顯示當前日期。

我希望獲得以下協助。

在第一個IIF語句,>>>IIf(Fields!Freeze.Value, Fields!effectivedate.Value, 我要評估一個新的價值領域!FreezeDate.value

  1. 如果字段!Freeze.Value = true,那麼請檢查該字段! effectivedate.Value比Fields!FreezeDate.value小30天或更短。 A.如果用29天小於領域!FreezeDate.value然後顯示的字段!effectivedate.Value B.如果其30天或以上小於領域!FreezeDate.value然後顯示的字段!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代碼?

如果我沒有正確解釋某些內容,請進一步澄清。

回答

2

據我瞭解的需求,你需要添加哪些檢查兩個日期之間的天差額再IIF()部分,然後顯示EFFECTIVEDATE如果差<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 
) 
) 
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

您可能需要遊玩以獲得理想的結果。你對你的邏輯的英語描述不是很好。在這種情況下我能做到最好。