Vb.net 从类型转换为';DBNull';输入';十进制';无效
我从这行代码的标题“从'DBNull'类型转换为'Decimal'类型无效”中得到错误Vb.net 从类型转换为';DBNull';输入';十进制';无效,vb.net,ado.net,Vb.net,Ado.net,我从这行代码的标题“从'DBNull'类型转换为'Decimal'类型无效”中得到错误 _event.TotalDollars = IIf((dr("TotalDollars") Is DBNull.Value), "$0", CType(dr("TotalDollars"), Decimal).ToString("c")) \u event.TotalDollars是一个字符串 为什么IIF声明的第三部分会被评估?此IIF的全部要点是,DBNull值不会试图转换为小数。两个问题: IIF在返
_event.TotalDollars = IIf((dr("TotalDollars") Is DBNull.Value), "$0", CType(dr("TotalDollars"), Decimal).ToString("c"))
\u event.TotalDollars
是一个字符串
为什么IIF声明的第三部分会被评估?此IIF的全部要点是,DBNull值不会试图转换为小数。两个问题:
IIF
在返回之前对True和False操作进行评估
根据您拥有的VS版本,您可以使用If(条件、真、假)
(条件、真、假)(没有)
另外,您可能最好使用
IsDbNull(condition)
来进行测试。使用DatasetExtensions,您也可以使用可为空的十进制类型来进行测试
_event.TotalDollars = if(dr.Field(of Decimal?)("TotalDollars"),0).ToString("c")
那是因为
IIF
只是一个标准函数调用,对吗?