Guten Morgen zusammen,
in meinem Projekt bekommt mein Anwender eine Exceltabelle zugeschickt, die in eine Accessdatenbank eingepflegt werden muss.
Da aber nicht jeder Zugriff auf die accdb haben darf, habe ich eine kleine VB Anwendung geschrieben, die den Import übernimmt.
Der Anwender gibt den Speicherpfad der Exceldatei an, die Daten aus der Exceldatei werden dann in einer DataGridView eingelesen (um nochmals eine Qualitätssicherung machen zu können, o.ä.) und können dann an die accdb übergeben werden.
Das funktioniert auch alles soweit ganz gut und stabil.
Das ganze funktioniert bei wenigen Datensätzen auch recht fix.
Wenn es dann aber mehrere Datensätze werden, dann dauert das schon eine Weile.
Gibt es vielleicht eine Möglichkeit, die Daten aus der DGV "in einem Rutsch" in die accdb zu übertragen?
Vielen Dank im Voraus für eure Rückmeldung.
in meinem Projekt bekommt mein Anwender eine Exceltabelle zugeschickt, die in eine Accessdatenbank eingepflegt werden muss.
Da aber nicht jeder Zugriff auf die accdb haben darf, habe ich eine kleine VB Anwendung geschrieben, die den Import übernimmt.
Der Anwender gibt den Speicherpfad der Exceldatei an, die Daten aus der Exceldatei werden dann in einer DataGridView eingelesen (um nochmals eine Qualitätssicherung machen zu können, o.ä.) und können dann an die accdb übergeben werden.
Das funktioniert auch alles soweit ganz gut und stabil.
VB.NET-Quellcode
- Private Sub cmd_DatensaetzeImportieren_Click(sender As Object, e As EventArgs) Handles cmd_DatensaetzeImportieren.Click
- 'Erstellen von Variablen
- Dim intAktuellerDatensatz As Integer
- Dim intAktuelleZeile As Integer = 0
- Dim strTabelle As String = ""
- 'Wenn es sich bei Import um Testdaten handelt, werden diese in die entsprechende Tabelle eingetragen.
- If cbx_TEST.Checked = True Then
- strTabelle = strTabellennameTest
- Else
- strTabelle = strTabellenname
- End If
- 'Anzeigen der GroupBox zum aktuellen Datensatz
- With GroupBox7
- .Visible = True
- End With
- 'Beginn der For-Schleife zum Aufruf des SQL-INSERT
- For intAktuellerDatensatz = 1 To dgv_Auftragstabelle_Values.RowCount
- lbl_UebertrageDatensatz.Text = intAktuellerDatensatz.ToString & "/" & dgv_Auftragstabelle_Values.RowCount.ToString
- Me.Refresh()
- '--------------------------------------------
- 'Erstellen des SQL-Statements
- Dim strSQL_Statement As String = ""
- strSQL_Statement = "INSERT INTO " & strTabelle & 'Tabellennamen
- " (Daten)" & 'Tabellenattribute
- " VALUES ('" & dgv_Auftragstabelle_Values.Item("Werte", intAktuelleZeile).Value.ToString & "', '" & 'Werte
- intAktuelleZeile = intAktuelleZeile + 1
- '--------------------------------------------
- 'DB Verbindung aufbauen
- Dim Anzahl As Integer
- Dim con As New OleDb.OleDbConnection
- Dim cmd As New OleDb.OleDbCommand
- 'Zusammenstellung der Verbindung zur Accessdatei
- con.ConnectionString =
- "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strSpeicherpfadAuftragsDatenbank & ";Jet OLEDB:Database Password = " & strDatenbankpasswort
- cmd.Connection = con
- Try
- con.Open()
- cmd.CommandText = strSQL_Statement
- Debug.Print(cmd.CommandText)
- Anzahl = cmd.ExecuteNonQuery()
- Catch ex As Exception
- MsgBox(ex.Message)
- End Try
- con.Close()
- Next intAktuellerDatensatz
- MessageBox.Show(text:="Übertragung der Datensätze abgeschlossen.", caption:="Abschlussmeldung", buttons:=MessageBoxButtons.OK, icon:=MessageBoxIcon.Information)
- 'Maske leeren
- Call UXDesign.MaskeZuruecksetzenGesamt()
- End Sub
Das ganze funktioniert bei wenigen Datensätzen auch recht fix.
Wenn es dann aber mehrere Datensätze werden, dann dauert das schon eine Weile.
Gibt es vielleicht eine Möglichkeit, die Daten aus der DGV "in einem Rutsch" in die accdb zu übertragen?
Vielen Dank im Voraus für eure Rückmeldung.