2010-05-02 16 views
1

Alors, voilà:OleDbCommandBuilder et le déplacement des données accross tables

J'ai besoin de copier les données de la table dans la base de données Access, dans une autre table d'une autre base de données Access.

Les noms des colonnes des tables sont les mêmes, à l'exception du fait que la table FROM a 5 colonnes, le TO table a 6.

voici mon code:

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") 

Parce que la table FROM a 5 lignes et l'autre a 6, j'essaie d'utiliser la InsertCommand générée par le DataAdapter de la première table.

Cela fonctionne, seulement qu'il insère les données de FROMTABLE dans le même FROMTABLE, au lieu de TOTABLE.

Répondre

0

Je pense que vous devez exécuter une requête sur les lignes de:

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"