我正在使用Business Intelligence 2008在SSRS中創建表。我有一個日期作爲字符串作爲表中使用的值之一。該值可能有一個表示日期的字符串,或者它也可能爲空。如果它有一個值,我想以不同的方式格式化值。現在,我對它顯示的單元格有這樣的表達式:SSRS - 如何使IIF語句忽略無效值
=IIf(Fields!MyDate.Value = Nothing, "", Format(CDate(Fields!MyDate.Value), "dd-MM-yyyy"))
如果該字段有值,這可以很好地工作。但是,當該字段爲空時,單元格將填充爲#Error
。這是有道理的,如果我只有Format
函數,但似乎IIf
應該防止它試圖運行一個空值。我這個表情測試它:
=IIf(Fields!MyDate.Value = Nothing, "No value", "Value")
...果然空白值進入的發言,並印有「沒有價值」的正確部分。我不明白爲什麼不使用表達式的第二部分會導致錯誤。有沒有辦法重寫這個不會導致錯誤?由於
編輯:正如我在評論中提到的,我也嘗試了switch語句是這樣的:
=Switch(Fields!MyDate.Value = Nothing, "", Fields!MyDate.Value <> Nothing, Format(CDate(Fields.MyDate.Value), "dd-MM-yyyy"))
不過,這回#Error
爲空值也是如此。
關於可能重複的編輯:請不要將其標記爲詢問是否重複IIf短路。我看了那裏,它提出了一個不同的問題,並沒有給出我需要的答案。
做你試圖用'IsNothing'功能代替?:'IIF(IsNothing(場MyDate.Value) 「沒有價值」,「價值」)' – Lamak
您是否嘗試過只爲字段設置格式字符串而不是使用'IIF'? –
@Lamak問題是,IIF不會短路,所以在評估第二個選項時出現錯誤。 –