Foxtable(狐表)用户栏目专家坐堂 → 如何批量生成关联表录入


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

主题:如何批量生成关联表录入

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


加好友 发短信
等级:五尾狐 帖子:1145 积分:7566 威望:0 精华:0 注册:2020/11/4 22:15:00
如何批量生成关联表录入  发帖心情 Post By: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



 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107827 积分:548486 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/5 8:54:00 [只看该作者]

不建议使用自增的主键列作为业务单号,会有很多不确定性存在。

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

 回到顶部