2008-09-25 56 views
5

我有以下在SSRS我的文本框中的值報告:如何在SSRS中執行.AddDays()之前檢查空值?

=iif(IsNothing(Fields!MyDate.Value), "", Format(Fields!MyDate.Value.AddDays(30), "MMMM dd, yyyy")) 

它給了我一個「#錯誤」每次指明MyDate是空的。

我該如何解決這個問題?

UPDATE:

我寫了這個自定義函數,它擺脫了錯誤,但返回0001 1月31日,當空日期已過。

Public Shared Function NewDate(myDate as DateTime, days as integer) AS string 
IF ISNOTHING(myDate) OR ISDBNULL(myDate) Then 
    NewDate = "  " 
ELSE 
    NewDate = Format(myDate.AddDays(days), "MMMM dd, yyyy") 
END IF 
End Function 

@馬特漢密爾頓:使用DateAdd(! 「d」,30場MyDate.Value)

+0

爲什麼它必須是內聯的? – 2008-09-25 23:09:34

+0

因爲直到10分鐘前我不知道SSRS中的「自定義代碼」:) – 2008-09-25 23:24:27

回答

6

的問題,當然,是不分勝負VB的IIF語句計算兩側。所以即使你的字段爲空,它仍然在評估「Value.DateAdd」調用。

如果我記得沒錯,SSRS有它自己的「DateAdd」功能,您可以改用它。所以你可以做這樣的事情(請查看文檔中的內容):

=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy")) 
相關問題