vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
DataSet in Access-Datenbank importieren 
Autor: Cpt.Fly
Datum: 14.10.11 18:11

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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
DataSet in Access-Datenbank importieren2.275Cpt.Fly14.10.11 18:11
Re: DataSet in Access-Datenbank importieren1.132ModeratorFZelle15.10.11 01:25

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel