Hi Marco,
hier mal ein Beispiel wie du es lösen kannst.
Also - du mußt die Tabelle DB2 & DB1 Datenbank in eine Dataset laden welches du <ds> nennst.
Wenn die Daten im Dataset sind rufst, du den unten gezeigten Code auf.
Was passiert !
Das Dataset wird analysiert und in deine Datenbank: Source=test.mdb (ACCESS)
wird eine Tabelle mit den Spalten erstellt und die Zeilen werden in die Tabelle kopiert/geschrieben.
Wenn du beide Tabellen kopiert hast, kannst du wie gewohnt in Access arbeiten.
0 = Connection zur Access datei
1 = Create Befehl für Tabelle in Access Datenbank erstellen
2 = WICHTIG!!!! Befehl für Access aufbereiten
Hier mußt du SQL Befehl aufbereiten, dass er von Access akzeptiert wird.
In diesem Beispiel wird alles in einen Text geändert.
Wenn du für deine Abfrage Datum oder Zahlfelder benötigst wird es etwas mehr Arbeit
beim erstellen der Tabelle und dem Schreiben der Datensätze.
3 = Create Befehl ausführen
Tabelle erstellen und die Datensätze Zeilenweise schreiben.
In meinen Test benötigt Access ca. 1 Sekunde für 10000 Datensätze.
Private Sub WriteToAccess()
'0
'Connection zur Access datei
Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data" & _
"Source=test.mdb")
Dim tabellenname As String = "testdb"
'1
'Create Befehl für Tabelle in Access Datenbank erstellen
Dim sb As New StringBuilder()
sb.Append("CREATE TABLE ")
sb.Append(tabellenname)
sb.Append("(")
For Each field As DataColumn In dt.Columns
sb.AppendFormat(" {0} {1},", field.ColumnName, _
field.DataType.ToString())
Next
'2
'Befehl für Access aufbereiten
sb.Append(")")
sb.Replace(",)", ")")
sb.Replace("System.", "")
sb.Replace("Int16", "String")
sb.Replace("Int32", "String")
sb.Replace("Boolean", "String")
sb.Replace("Single", "String")
'3
'Create Befehl ausführen
Dim cmd As New OleDbCommand(sb.ToString(), con)
Try
con.Open()
cmd.ExecuteNonQuery()
'Status aller Datensätze auf added setzen
For Each row As DataRow In ds.Tables(0).Rows
row.SetAdded()
Next
'In Access Datenbank schreiben
Dim dadapter2 As New OleDbDataAdapter()
dadapter2.SelectCommand = New OleDbCommand("Select * from " & _
tabellenname, con)
Dim custCB As New OleDbCommandBuilder(dadapter2)
dadapter2.Update(ds)
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Sub Gruss
VIVAX
}
}
}
1:0 für Visual Basic.NET
|