我有一种情况,我想从MS SQL表插入访问数据库表。 相同的列和一切。 我有两个数据集和两个表适配器。我可以在每个数据集中执行我想要的任何操作 - 任何操作但我无法从一个表插入另一个表。 我尝试为目标tableadapter创建一个Insert查询,但是我无法使用它。尝试连接,没有任何作用。
搜索了几天,根本找不到它。感谢您的回答。你能帮我解释一下我的榜样吗?我无法设置它。这就是我得到的:
Dim myToTableTableAdapter As FirstDataSetTableAdapters.ToTableTableAdapter
myToTableTableAdapter = New FirstDataSetTableAdapters.ToTableTableAdapter()
Dim myFromTableTableAdapter As SecondDataSetTableAdapters.FromTableTableAdapter
myFromTableTableAdapter = New SecondDataSetTableAdapters.FromTableTableAdapter()
myFromTableTableAdapter = myToTableTableAdapter.Clone
'but it doesnt work from here`
我想做的是:
For each drfrom As DataRow In myFromTableTableAdapter.GetData
myToTableTableAdapter.InsertInto(drfrom.item(column01), drfrom.item(column02), drfrom.item(andSoOn))
Next
但在我看来,这比“插入选择”脚本要花费的时间长得多。
答案 0 :(得分:0)
您不能将一个表中的行插入另一个表中,但有几种方法可以执行您想要的操作。一种方式(有点冗长)是这样的:
' sets it up with same schema but empty rows
mOutTable = inTable.Clone
' Now insert the rows:
For Each rowIn In inTable.Rows
r = mOutTable.NewRow()
For Each col In inTable.Columns
r(col.ColumnName) = rowIn(col.ColumnName)
Next
mOutTable.Rows.Add(r)
Next
mOutTable.AcceptChanges
第二种方式,更简洁,是:
outTable = inTable.Clone
For Each inRow As DataRow In inTable.Rows
outTable.LoadDataRow(inRow.ItemArray, False)
End If
outTable.AcceptChanges
请注意,inTable和outTable都是ADO.NET DataTable对象。您无法在DataAdapter对象上实现我的建议。您必须使用DataTable对象。每个DataTable都可以以ADO.NET的标准方式与DataAdapter相关联:
Dim t as New DataTable()
a.Fill(t);
其中a是ADO.NET DataAdapter。我希望这有帮助! 吉姆