所以,在这里:
我需要从Access数据库中的表中复制数据,在另一个表中从另一个Access数据库中复制数据。
表中的列名是相同的,除了FROM表有5列,TO表有6列。
这是我的代码:
dsFrom.Clear()
dsTO.Clear()
daFrom = Nothing
daTO = Nothing
conn_string1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="etc.mdb;"
conn_string2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="database.mdb;"
query1 = "Select * from nomenclator_produse"
query2 = "Select * from nomenclator_produse"
Conn1 = New OleDbConnection(conn_string1)
conn2 = New OleDbConnection(conn_string2)
Conn1.Open()
conn2.Open()
daFrom = New OleDbDataAdapter(query1, Conn1)
daTO = New OleDbDataAdapter(query2, conn2)
daFrom.AcceptChangesDuringFill = False
dsFrom.HasChanges()
daFrom.Fill(dsFrom, "nomenclator_Produse")
dsFrom.HasChanges()
Dim cb = New OleDbCommandBuilder(daFrom)
dsTO = dsFrom.Copy
daTO.UpdateCommand = cb.GetUpdateCommand
daTO.InsertCommand = cb.GetInsertCommand
daTO.Update(dsTO, "nomenclator_produse")
因为FROM表有5行而另一行有6行,所以我试图使用第一个表的DataAdapter生成的InsertCommand。
它的工作原理只是它将来自FROMTABLE的数据插入到同一个FROMTABLE中,而不是TOTABLE。
答案 0 :(得分:0)
我认为你应该在以下几行执行查询:
conn_string2 = ";Database=c:\Docs\DBFrom.mdb;"
query1 = "INSERT INTO nomenclator_produse (field1) " _
& "SELECT f.Field1 from [" & conn_string2 & "].nomenclator_produse f " _
& "LEFT JOIN nomenclator_produse t " _
& "ON f.id=t.id WHERE t.id Is Null"