以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  OriginalValue原数值为空按0计算要如何写?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=44968)

--  作者:scott518
--  发布时间:2014/1/13 9:50:00
--  OriginalValue原数值为空按0计算要如何写?
如下语句:直接更新后台数据时,如果e.DataRow.OriginalValue("数量")为null时就不会计算了,请问表达式中要怎么写如果为空就按0来处理,注释掉的那行写法没提示出错,但好象计算结果也不正确。谢谢!
Dim cmd As New SQLCommand
cmd.ConnectionName = Mydata
cmd.CommandText = "Update {订单明细} Set 累计入库 = 累计入库 - " & e.DataRow.OriginalValue("数量") 
\'cmd.CommandText = "Update {订单明细} Set 累计入库 = 累计入库 - isnull(" & e.DataRow.OriginalValue("数量") & ",0)
cmd.ExecuteNonQuery()


--  作者:Bin
--  发布时间:2014/1/13 9:55:00
--  
cmd.CommandText = "Update {订单明细} Set 累计入库 = 累计入库 - " & IIF(e.DataRow.OriginalValue("数量") is nothing,0,e.DataRow.OriginalValue("数量"))
--  作者:狐狸爸爸
--  发布时间:2014/1/13 9:56:00
--  

cmd.CommandText = "Update {订单明细} Set 累计入库 = 累计入库 - iif(数量 Is Null,0,数量)"

 

如果是SQL Server

 

cmd.CommandText = "Update {订单明细} Set 累计入库 = 累计入库 - (Case When 数量 Is Null Then 0 Else 数量 End)"

[此贴子已经被作者于2014-1-13 10:00:24编辑过]

--  作者:scott518
--  发布时间:2014/1/13 10:16:00
--  
谢谢,数据库是sql server 的,BIN的那个写法适合SQL Server吗,因为一定要用原始值判断,狐爸那个case when数量是指数量的原始值吗?
[此贴子已经被作者于2014-1-13 10:21:01编辑过]

--  作者:狐狸爸爸
--  发布时间:2014/1/13 10:45:00
--  
sql语句,取的都是数据库的原始值,不用担心。