以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]父表&子表 一起克隆 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=91474) |
-- 作者:qwz405 -- 发布时间:2016/10/11 17:24:00 -- [求助]父表&子表 一起克隆 目的:克隆一份新的数据,包含子表的所有行,原始数据保持不变 父表的名称是唯一的,即禁止重复 用下面的代码生成新的父表数据,原父表将无数据,其所有子表数据将关联到新父表中,即:""& str &"_复件" 中,请求帮助: Dim str As String = Tables("订单").Current("名称") Tables("订单").Current.Clone() Tables("订单).Current("名称") = ""& str &"_复件" Dim drs As List(Of DataRow) drs = Tables("订单").Current.DataRow.GetChildRows("订单明细") For Each dr As DataRow In drs dr.Clone Next
|
-- 作者:有点蓝 -- 发布时间:2016/10/11 17:57:00 -- 父表就不要用clone了 Dim r As Row = Tables("订单").Current Dim dnew As Row = Tables("订单").AddNew Dim name As String = r("名称") & "_复件" For Each c As Col In Tables("订单").Cols If c.Name = "名称" Then dnew(c.Name) = name ElseIf c.Name <> "_Identify" Then dnew(c.Name) = r(c.Name) End If Next Dim drs As List(Of DataRow) drs = r.DataRow.GetChildRows("订单明细") Dim rc As DataRow For Each dr As DataRow In drs rc = dr.Clone rc("名称") = name Next |
-- 作者:舞楼名角 -- 发布时间:2018/7/19 12:46:00 -- 如果代码中“名称”列是由比如由第二列+第三列+第四列等等好几列不为空时代码组合而成的,而名称是父子表关联列,那么以上代码该如何调整呢?谢谢 |
-- 作者:有点甜 -- 发布时间:2018/7/19 12:50:00 -- 以下是引用舞楼名角在2018/7/19 12:46:00的发言:
如果代码中“名称”列是由比如由第二列+第三列+第四列等等好几列不为空时代码组合而成的,而名称是父子表关联列,那么以上代码该如何调整呢?谢谢
建议你加入一列【名称】列,设置表达式或者datacolchanged把你各个列的值合并进去。 |
-- 作者:舞楼名角 -- 发布时间:2018/7/19 12:54:00 -- Dim r As Row = Tables("订单").Current Dim dnew As Row = Tables("订单").AddNew Dim name As String = r("名称") & "_复件" For Each c As Col In Tables("订单").Cols If c.Name = "名称" Then dnew(c.Name) = name ElseIf c.Name <> "_Identify" Then dnew(c.Name) = r(c.Name) End If Next Dim drs As List(Of DataRow) drs = r.DataRow.GetChildRows("订单明细") Dim rc As DataRow For Each dr As DataRow In drs rc = dr.Clone rc("名称") = name Next 这个代码中名称列已有,也是在datacolchanged把你各个列的值合并进去。这样在克隆的时候名称列中加不上”_复制“字符
|
-- 作者:舞楼名角 -- 发布时间:2018/7/19 13:28:00 -- 这个代码中名称列已有,也是在datacolchanged把你各个列的值合并进去。这样在克隆的时候名称列中加不上”_复制“字符 |
-- 作者:goodhawk -- 发布时间:2018/7/19 13:38:00 -- 我喜欢用 sqlcommand, 然后直接sql操作 |
-- 作者:有点甜 -- 发布时间:2018/7/19 16:23:00 -- 以下是引用舞楼名角在2018/7/19 13:28:00的发言:
这个代码中名称列已有,也是在datacolchanged把你各个列的值合并进去。这样在克隆的时候名称列中加不上”_复制“字符
报什么错?你执行的时候遇到什么问题? |
-- 作者:舞楼名角 -- 发布时间:2018/7/19 17:45:00 -- 我取消了红色部分的代码,因为红色部分会重新生成“名称”列的内容,所有没有成功,取消红部分,改为手动录入,还是可以的。 Dim r As Row = Tables("订单").Current Dim dnew As Row = Tables("订单").AddNew Dim name As String = r("名称") & "_复件" For Each c As Col In Tables("订单").Cols If c.Name = "名称" Then dnew(c.Name) = name ElseIf c.Name <> "_Identify" Then dnew(c.Name) = r(c.Name) End If Next Dim drs As List(Of DataRow) drs = r.DataRow.GetChildRows("订单明细") Dim rc As DataRow For Each dr As DataRow In drs rc = dr.Clone rc("名称") = name Next
|
-- 作者:有点甜 -- 发布时间:2018/7/19 17:54:00 -- 回复9楼,你不是需要【克隆】行么?为什么不给各个列赋值?你可以改成如
dnew("某列1") = r("某列1") dnew("某列2") = r("某列2") dnew("某列3") = r("某列3") |