问个问题,如何能解决

eaqpi 2016-08-11 09:34:05
.数量 = IIf(row("数量") Is DBNull.Value, 0, Convert.ToInt64(row("数量")))


为啥总是提示-对象不能从DBnull转换成其他类型?
...全文
221 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbdzjx 2016-08-12
  • 打赏
  • 举报
回复
看一下这个:http://bbs.csdn.net/topics/391027726?page=1 网上的说法,IIF是不短路的,要将后面的两个结果都算一遍,再判断IF。
eaqpi 2016-08-12
  • 打赏
  • 举报
回复
有可能是我手写错 IS 和 =,但是程序内是用对的。 很奇怪的是这个问题 .数量 = IIf(row("数量") = DBNull.Value, 0, Convert.ToInt64(row("数量"))) 这个,如果数量是空,然后就会报出 dbnull 不能转换这个错误。 然而,当我使用 if(row("数量") = DBNull.Value) then .数量=0 else .数量=Convert.ToInt64(row("数量")) endif 的时候,一切都已正常。 是不是有这个问题,IIF 不论条件是否满足,都会去运行Convert.ToInt64(row("数量")) 这段代码?导致最后的出错!
  • 打赏
  • 举报
回复
那isnot呢?VB中可不一样,是运算符不是关键字
  • 打赏
  • 举报
回复
DBNull是类型 DBNull.Value是具体的值,如果你判断是不是为null,直接用==比较就行了
  • 打赏
  • 举报
回复
is是用于于判断类型的,不是用于判断值
  • 打赏
  • 举报
回复
row("数量") = DBNull.Value (与Equals一样), row.IsNull("数量"), row("数量") Is DBNull 基本不用VB和ADO了,这种记不太清,你可以试一下
冰冷的小爪 2016-08-11
  • 打赏
  • 举报
回复
没有值怎么转呢?用sql语句在数据库转也转不了吧

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧