2

タイトルに「型 'DBNull' から型 'Decimal' への変換が無効です」というエラーが表示されます。このコード行から

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

_event.TotalDollars文字列です

IIF ステートメントの 3 番目の部分が評価されるのはなぜですか? この IIF の要点は、DBNull 値が Decimals に変換されないようにすることです。

4

2 に答える 2

4

2 つの問題:

IIF戻る前に True と False の両方の操作を評価します。

あなたが持っているVSのバージョンに応じて、If(condition,true,false)代わりに使用することができます(そうではありません)

IsDbNull(condition)また、おそらくテストを行うために使用する方が良いでしょう。

于 2012-11-30T18:12:55.993 に答える
1

DatasetExtensions を使用すると、null 許容の 10 進数型でこれを行うこともできます。

_event.TotalDollars = if(dr.Field(of Decimal?)("TotalDollars"),0).ToString("c")
于 2012-11-30T20:08:18.927 に答える