【问题标题】:Conversion from type 'DBNull' to type 'Decimal' is not valid从“DBNull”类型到“Decimal”类型的转换无效
【发布时间】:2012-11-19 00:00:33
【问题描述】:

我收到标题“从类型 'DBNull' 到类型 'Decimal' 的转换无效”中的错误。从这行代码

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

_event.TotalDollars 是一个字符串

为什么要评估 IIF 语句的第三部分?这个 IIF 的重点是不尝试将 DBNull 值转换为小数。

【问题讨论】:

    标签: vb.net ado.net


    【解决方案1】:

    两个问题:

    IIF 在返回之前评估 True 和 False 操作。

    根据您拥有的 VS 版本,您可以使用 If(condition,true,false) 代替(不使用)

    另外,您最好使用IsDbNull(condition) 进行测试。

    【讨论】:

    • 那是因为IIF 只是一个标准的函数调用,对吗?
    【解决方案2】:

    使用 DatasetExtensions,您也可以使用可为空的十进制类型来执行此操作。

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

    【讨论】:

      猜你喜欢
      • 2014-06-10
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      相关资源
      最近更新 更多