当前表A,经过筛选等操作后,只显示部分行、部分列,希望将这些显示的行、列内容复制到另一个表B中。
目前的做法(也是论坛里老师教的):
是将表B作为一个固定表,其结构自表A复制过来,然后复制数据,代码如下。
Dim nma1,nmb1 As new List(Of String ) '集合
For Each c As Col In Tables("A" ).cols '获得当前显示的列
If c.Visible Then
nma1.add(c.Name)
nmb1.add(c.Name)
End If
Next
Dim nma =nma1 .ToArray() '数组
Dim nmb =nmb1 .ToArray()
'复制所有行到B中
With Tables ("A")
For i As Integer = 0 To .rows. Count-1 '所有行
CurrentTable.Position = i
Dim dr As DataRow = DataTables("B" ).AddNew
For j As Integer = 0 To nma. Length - 1
dr(nmb(j)) = .current (nma( j))
Next
Next
End With
问题是:(1)当表A的结构变化后,表B的结构不会自动变化,当复制的列中有表B中不存在的列,就会出错。
(2)表B中仍然有一些多余的列。
如果能够根据当前显示的列,自动生成一个临时表B,然后再复制相关行的数据到表B中,就能解决上述问题。
还请各位老师继续指点。