以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何批量生成关联表录入  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=158008)

--  作者:lin98
--  发布时间:2020/11/4 23:52:00
--  如何批量生成关联表录入
如何实现,从订单明细里,根据“客户,日期”等相关字段,实现主表和明细表的批量录入,主表的“单号”是自增长?
类以下面:
假定出库表的主键是出库单号列,而且是自动增量型,那么上述代码是无法正常运行的,因为作为自动增量列,出库单编号是由系统自动生成的,而且是在保存之后生成。
所以我们在保存出库单之后,必须想办法获取自动生成的出库单编号,并赋值给随后新增的出库单明细的出库单编号列,否则二者之间将失去关联。

Foxtable处理这种问题非常简单,因为每次保存新增行之后,Foxtable都会自动访问后台数据库,获取新增行的主键值并写入到主键列中。
修改后的代码如下,留意加粗显示的代码:

Dim cmd As new SQLCommand
cmd.C
Dim ckd As DataTable
Dim ckmx As DataTable
cmd.CommandText = "Selec * From {出库} Where [出库单编号] Is null"  \'生成一个空出库表
ckd = cmd.ExecuteReader(True) \'记得将参数设置为True
Dim cr As DataRow = ckd.AddNew()  \'增加出库单
cr("出库日期") = Date.today
cr("库管员") = "张三"
ckd.Save()  \'必须提前保存出库单,以获取自动生成的出库单编号.
cmd.CommandText = "Selec * From {出库明细} Where [出库单编号] Is null"  \'生成空出库明细表
ckmx = cmd.ExecuteReader(True) \'记得将参数设置为True
Dim mr As DataRow = ckmx.AddNew()  \'增加一个出库明细
mr("出库单编号") = cr("出库单编号")  \'将自动生成的出库单编号赋值后新增的出库明细.
mr("商品代码") = "HC00101"
mr("数量") = 50
mr = ckmx.AddNew() \'再增加一个出库明细
mr("出库单编号") = cr("出库单编号") \'将自动生成的出库单编号赋值后新增的出库明细.
mr("商品代码") = "HC00102"
mr("数量") = 100
ckd.Save()
ckmx.Save()



 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:动态加载演示.foxdb



--  作者:有点蓝
--  发布时间:2020/11/5 8:54:00
--  
不建议使用自增的主键列作为业务单号,会有很多不确定性存在。

单号建议使用这种方式生成:http://www.foxtable.com/webhelp/topics/2403.htm