Foxtable(狐表)用户栏目专家坐堂 → 条件中有一个字段可能是空值的处理


  共有4748人关注过本帖树形打印复制链接

主题:条件中有一个字段可能是空值的处理

帅哥哟,离线,有人找我吗?
scott518
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
条件中有一个字段可能是空值的处理  发帖心情 Post By:2014/3/13 21:15:00 [显示全部帖子]

库存表有    物料编码,工序,库存数量 三个字段
入库单有  物料编码,工序,入库数量 三个字段

入库单保存时通过下面代码更新库存数量。
update 库存表 set 库存数量 = 库存数量 + 入库数量 where 物料编码 = ‘“ & e.datarow("物料编码") & ”’ and 工序号= “ & e.datarow(" 工序号 ")
但当两个表中的工序号都为空时就不会更新。当然如果写成两条Update语句分别用工序号 is null 或 is not null来写的方式我会,但感觉那样要执行两次,

如果只写一条语句,怎么样才能实现两个表中工序号都为空也让条件成立?谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/3/14 9:26:00 [显示全部帖子]

谢谢BIN,但这样只适合工序号不为空的,我是想一条语句当两个表的工序号同时不为空或者同时为空时都适用。

 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/3/14 9:47:00 [显示全部帖子]

主要是当两个表的物料编码都相等,同时两个表的工序号都为空时也让它执行,即在编码相同的情况下两个表工序为空也等于是相等。即同条语句实现,在编码相等时,表个表中的工序相等成立, 工序同时为空也成立。

 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/3/14 10:05:00 [显示全部帖子]

其实从1楼开始就是同一个意思,即想让下面这条语句改写成在两个表的工序同时不为空或者同时为空时都能执行。
update 库存表 set 库存数量 = 库存数量 + 入库数量 where 物料编码 = ‘“ & e.datarow("物料编码") & ”’ and 工序号= “ & e.datarow(" 工序号 ")

关键就是sql 当条件出现null = null时等于不成立,如何写才能让null = null这种情况相等。

 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/3/14 10:30:00 [显示全部帖子]

如下图:入库时是按物料编码和工序两列来更新库存表中的库存数量的。

如果入库单中的工序为1,则更新库存表中工序为1并且相同物料编码的库存数量,

如果入库单中的工序为空,则更新库存表中工序为空并且相同物料编码的库存数量,

主要是想问这两种情况能否只写在一条语句中实现(即我认为两个工序都为空编码相同时也等于是相等的。)


图片点击可在新窗口打开查看此主题相关图片如下:360截图20140314101417209.jpg
图片点击可在新窗口打开查看

下面这种写法:两个表中的工序号都为空时where条件就不成立了,想要类似这样的正确写法。

update 库存表 set 库存数量 = 库存数量 + 入库数量 where 物料编码 = ‘“ & e.datarow("物料编码") & ”’ and 工序号= “ & e.datarow(" 工序号 ")

 

谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/3/14 11:01:00 [显示全部帖子]

谢谢,不纠结这个问题了,用下面这句好像可以

update 库存表 set 库存数量 = 库存数量 + 入库数量 where 物料编码 = ‘“ & e.datarow("物料编码") & ”’ and isnull(工序号,0) = “ & iif(e.datarow(" 工序号 ") is nothing,0,e.datarow(" 工序号 "))


 回到顶部