以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  克隆当前行问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=81479)

--  作者:ShotHit
--  发布时间:2016/2/28 22:02:00
--  克隆当前行问题
举例如:
订单表Tb_Order,主键为订单号:order_id

对于已存在一个订单号为:A001的数据,进行克隆行操作
If CurrentTable.Current IsNot Nothing Then
    CurrentTable.Current.Clone()
End If

提示主键值A001已存在

按道理说:这个只是在Tables中加一行,并没有真正保存吧?

请问如何改进实现,排除逐个字段赋值的方式

--  作者:Hyphen
--  发布时间:2016/2/29 9:14:00
--  
只能 逐个字段赋值,除非改为用自增字段做主键,然后订单号改为用唯一索引
--  作者:大红袍
--  发布时间:2016/2/29 9:25:00
--  

要这样做才行。

 

Dim r As Row = CurrentTable.Current
If r IsNot Nothing Then
    Dim Cols1() As String = {"来源列一","来源列二","来源列三"}
    Dim dr2 As DataRow = CurrentTable.DataTable.AddNew()
    For i As Integer = 0 To Cols1.Length -1
        dr2(Cols1(i)) = r(Cols1(i))
    Next
End If


--  作者:ShotHit
--  发布时间:2016/2/29 22:43:00
--  
这个列名的数组有办法自动获取到吗?
也就是获取order表的所有列名,转换成一个数组

--  作者:大红袍
--  发布时间:2016/2/29 22:57:00
--  
Dim r As Row = CurrentTable.Current
If r IsNot Nothing Then
    Dim dr2 As DataRow = CurrentTable.DataTable.AddNew()
    For Each c As Col In CurrentTable.Cols
        If c.name <> "第二列" Then
            dr2(c.name) = r(c.name)
        End If
    Next
End If