2012-11-30 129 views
2

我在標題「從類型'DBNull'轉換爲類型'Decimal'無效時出現錯誤。從下面這行代碼從「DBNull」類型到「Decimal」類型的轉換無效

_event.TotalDollars = IIf((dr("TotalDollars") Is DBNull.Value), "$0", CType(dr("TotalDollars"), Decimal).ToString("c")) 

_event.TotalDollars

爲什麼IIF語句的第三部分有朝一日能評價一個字符串?這個IIF的全部重點是,DBNull值不會被轉換成小數。

回答

4

兩個問題:

IIF返回前會評估真假操作。

取決於哪個VS的版本,你有你可以只使用If(condition,true,false),而不是(不)

此外,你可能會更好使用IsDbNull(condition)做測試。

+0

不知道.. –

+0

它是一個常見的問題。 –

+0

這是因爲'IIF'只是一個標準的函數調用,對嗎? – Kratz

1

使用DatasetExtensions,你也可以用一個可爲空的十進制類型來做到這一點。

_event.TotalDollars = if(dr.Field(of Decimal?)("TotalDollars"),0).ToString("c") 
相關問題