Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 从类型转换为';DBNull';输入';十进制';无效_Vb.net_Ado.net - Fatal编程技术网

Vb.net 从类型转换为';DBNull';输入';十进制';无效

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在返

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

_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
只是一个标准函数调用,对吗?