我尝试将行从一个DataTable
复制到另一个SQL
,但只复制尚未将数据保存到数据库表的行。
DataTable
这方面工作正常,它返回了正确的列数,但是,当我将找到的行添加到第二个DataSource
并将其设置为我的网格的lftable = New DataTable
Try
For Each dc As DataColumn In lineTable.Columns
lftable.Columns.Add()
Next
Dim ds As New DataSet
For Each row As DataRow In lineTable.Rows
Dim da As New OleDbDataAdapter("SELECT * FROM [Order_Freight] WHERE [Order_Number] = ? AND [Product_Code] <> ?", con)
da.SelectCommand.Parameters.Add("@num", OleDbType.Integer).Value = orderNum
da.SelectCommand.Parameters.Add("@prod", OleDbType.VarChar).Value = row.Item("Product_Code")
da.Fill(ds)
For Each dr As DataRow In ds.Tables(0).Rows
Dim nRow = lftable.Rows.Add()
nRow.ItemArray = dr.ItemArray()
Next
Next
ugProducts.DataSource = lfTable
,没有显示数据,尽管已经添加了一行,因为行选择器可见。
我做错了什么,为什么不用它复制数据呢?
DataSource
为其分配 if(Array.get(a, i)==Array.get(a, j))
答案 0 :(得分:1)
正确填写列:
For Each dc As DataColumn In lineTable.Columns
lftable.Columns.Add(new DataColumn(dc.ColumnName, dc.DataType));
Next
您可以使用Row.Add
函数的重载,该函数允许您直接提供ItemArray
:
For Each dr As DataRow In ds.Tables(0).Rows
lftable.Rows.Add(dr.ItemArray)
'nRow.ItemArray = dr.ItemArray() <-- remove
Next
答案 1 :(得分:0)
而不是这段代码:
' For Each dc As DataColumn In lineTable.Columns
' lftable.Columns.Add() >
' lftable.Columns.Add(dc)
' Next
使用DataTable.Clone()仅将lineTable中的列复制到lftable
lftable = lineTable.Clone();
然后
For Each dr As DataRow In ds.Tables(0).Rows
lftable.Rows.Add( dr.ItemArray)
Next