以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 两表更新目标表没有记录 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=141838) |
-- 作者:fubblyc -- 发布时间:2019/10/12 9:52:00 -- 两表更新目标表没有记录 老师, 有2个表,库存明细表和盘点明细表 通过以下代码,将盘点明细表的数量更新到库存明细表里 cmd.CommandText = " updat e 库存明细 set 实盘数量 = a.实盘数量 from 盘点明细表 As a where a.货号 = 库存明细.货号 And a.库存地点 = 库存明细.库存地点 And a.日期 = 库存明细.日期 " cmd.ExecuteNonQuery() 有种情况,库存明细表没有记录,而盘点明细表却有 因为是只更新 实盘数量 到库存明细表,没有新增,就会导致漏掉。 我采用以下方法也可以实现, 但感觉好像慢了点,老师,有没有更高效的办法: Dim dt1 As DataTable Dim dt2 As DataTable Dim dr1 As DataRow cmd.CommandText = "selec t * from 盘点明细汇总表 where " & filter dt1 = cmd.ExecuteReader() cmd.CommandText = "selec t * from 库存明细 where " & filter dt2 = cmd.ExecuteReader() Dim hhs As List(Of String) = dt2.GetValues("货号") For Each dr1 In dt1.DataRows If hhs.Contains(dr1("货号")) = False Then cmd.CommandText = " inser t into 库存明细 (库存地点,日期,货号,实盘数量) values ( \'" & dr1("库存地点") & "\',\'" & dr1("日期") & "\',\'" & dr1("货号") & "\', \'" & dr1("实盘数量") & "\' ) " cmd.ExecuteNonQuery End If Next |
-- 作者:有点蓝 -- 发布时间:2019/10/12 10:23:00 -- 试试 |
-- 作者:fubblyc -- 发布时间:2019/10/12 14:57:00 -- 谢谢蓝老师 |
-- 作者:fubblyc -- 发布时间:2019/10/16 15:47:00 -- insert into 库存明细 (库存地点,日期,货号,实盘数量,商品描述) select 库存地点,日期,货号,实盘数量 from 盘点明细汇总表 where " & filter & " and 货号 not in (select 货号 from 库存明细 where " & filter & ")" 蓝老师,可行可行。 然后我是要再加更新一个字段,这些增加的行 商品描述 字段 更新为 “新增记录” 这四个字 要怎么写在呢?因为现在是直接取另一个表的值。
[此贴子已经被作者于2019/10/16 15:47:06编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/10/16 15:53:00 -- insert into 库存明细 (库存地点,日期,货号,实盘数量,商品描述) select 库存地点,日期,货号,实盘数量,\'新增记录\' from 盘点明细汇总表 where " & filter & " and 货号 not in (select 货号 from 库存明细 where " & filter & ")" |
-- 作者:fubblyc -- 发布时间:2019/10/16 17:30:00 -- 谢谢蓝老师!!! |