Hallo zusammen,
ich stehe vor folgendem Problem:
Ich muss Daten aus einer Access-Datenbank exportieren und anschließend an einem anderen Standort die Daten wieder importieren.
Was schon funktioniert:
- Datensätze nach XML-Files exportieren
- XML-Files in ein DataSet einlesen.
Nun steh ich vor dem Problem das ich die Daten aus dem DataSet wieder in die Access-Tabelle schreiben muss. Wie kann ich die Daten in die Access-Datenbank schreiben ohne einen endlos langen INSERT-Befehl von Hand zu erstellen? (CommandBuilder???)
Folgende Sub hab ich bisher:
Private Sub ImportTableToSQL(ByRef aDataTable As DataTable, ByRef _
aConnection As OleDb.OleDbConnection, ByVal MyTableName As String)
' Create a command for the DataAdapter
Dim cmd As New OleDb.OleDbCommand("Select * From " & MyTableName, _
aConnection)
' Create the DataAdapter (needed for creating the sql-statement)
Dim da As New OleDb.OleDbDataAdapter(cmd)
' Fill our DataAdapter with Data from our DataTable
da.FillSchema(aDataTable, SchemaType.Source)
da.Fill(aDataTable.DataSet, aDataTable.TableName)
' Create the SQL Command Builder
Dim cb As New OleDb.OleDbCommandBuilder(da)
cb.SetAllValues = False
' Go thru all rows and insert the data
For Each r As DataRow In aDataTable.Rows
' Create the Insert-Command
Dim cmdResult As New OleDb.OleDbCommand( _
cb.GetInsertCommand.CommandText, aConnection)
cmdResult.Parameters.Clear()
Dim i As Integer = 0
' Go thru all columns in our DataTable and create a SQLParameter
' for our Statement with the value
' from our DataTable.
For Each col As DataColumn In aDataTable.Columns
i += 1
'cmdResult.Parameters.Add("@p" & i, col.DataType).Value =
' r.Item(col.ColumnName)
cmdResult.Parameters.AddWithValue("@p" & i, r.Item( _
col.ColumnName))
Next
Debug.Print("ImportTableToSQL: " & cmdResult.CommandText)
Dim iAffectedRecords As Integer = cmdResult.ExecuteNonQuery()
Debug.Print("Records Affected: " & iAffectedRecords)
Next
End Sub Das Ergebnis vom CommandBuilder schaut dann so aus:
INSERT INTO CLI (CODICE, NOME, INDIRIZZO, CAP, CITTA, TELEFONO, DATA_NASC, _
LUOGO_NASC, TIPO_DOC, DOCUMENTO, ENTE_DOC, DATA_C, DATA_R, DATA_M, ORA_M, _
RES_M, OMA_M, SALDO_OK, SCR1, SCR2, DEBITO, DATA_D, ORA_D, SCONTO, APPUNTI, _
ABIL, FIDO, NVHS, MESSAGGIO, LANG, CC1, MODIF, EMAIL, NOL, CARD, FLG1, FLG2, _
FLG3, GSM, SMS, CONTRACT_STATE, CARD_CATCH, X_NEXT_MSHIP) VALUES (?, ?, ?, ?, _
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, _
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" Warum bekommt er die Daten da nicht mit rein?
Wäre für jede Hilfe Dankbar!!!
Cpt.Fly |