以文本方式查看主题 - 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() |
-- 作者:有点蓝 -- 发布时间:2020/11/5 8:54:00 -- 不建议使用自增的主键列作为业务单号,会有很多不确定性存在。 单号建议使用这种方式生成:http://www.foxtable.com/webhelp/topics/2403.htm
|