Mehrere Access Datenbanken einlesen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von EaranMaleasi.

    Mehrere Access Datenbanken einlesen

    Hallöchen :D

    ich möchte mehrere Datenbanken von Microsoft Access 2007 mit Visual Studio 2017 einlesen und deren Inhalte in eine ListView schreiben (Listview und keine DataGridVIew!)
    Vorher im Programm habe ich mit Hilfe einer Schaltfläche den Pfad der zu lesenden Datenbanken ausgewählt. Diese Datenbanken lasse ich mir in einer CheckedListBox anzeigen
    Diese Datenbanken möchte ich nun einlesen und anschließend in die ListView schreibem. Geplant habe dabei ich eine Schleife, die alle ausgewählten Datenbanken der CheckedListBox abarbeitet und deren Inhalte einliest.
    Problem bei mir ist, dass ich nicht weiß wie ich auf diese Datenbanken zugreifen kann bzw. wie ich eine Verbindung zu ihnen aufbauen kann. Ich will nicht mit DataSource arbeiten, wo die Datenbanken
    per pfad ausgewählt werden.

    Als Idee habe ich mir folgendes Schonmal überlegt:
    Dim connect = new oledbconnection("Provider....Pfad..."
    Dim sql As String --> Für die SQL-Befehle
    sql = "SELECT..."
    Dim da = new oledbDataAdapter(sql, connect)


    Kann mir da jemand helfen oder Tipps geben wie ich weiter vorgehen muss/soll/kann/darf? :)

    Und noch eine Frage: wann benutzt man oledbcommand und wann oledbcommandbuilder?

    Dankeschön schonmal :D
    Ich glaube ich habe mich ein bisschen falsch ausgedrückt.
    Ich lese einen Pfad ein, an dem bspw. 5 Datenbanken des Typs .accdb gespeichert sind.
    Diese Dateien/Datenbanken will ich einlesen und in die ListView schreiben.
    Dazu muss ich irgendwie eine Verbindung aufbauen. Und da hängt es moment bei mir.
    Prinzipiell biste schon auf dem Richtigen Weg. Nacheinander die Connections aufbauen, und dann in den ListViews die Daten anzeigen. Oder auch alle Connections gleichzeitig aufbauen. Sind ja verschiedene Datenbanken. Brauchst dann halt pro Tabelle pro Datenbank eine eigene ListView.

    Gibt es ein konkretes Problem, dass du nicht gelöst bekommst? Und Wenn ja, was waren deine bisherigen Lösungsansätze?
    Mein Problem ist bisher, dass ich irgendwie nicht auf die Datenbanken zugreifen kann.
    Ich finde auch nirgends beispiele, wie ich am besten bei so einem Problem vorgehen soll.


    So bisher ist meine Idee folgende (wird ausgelöst durch Button):

    Dim connect As OleDbConnection = New OleDbConnection(mod_global.C_PROVIDER & txt_path.Text)
    Dim command As OleDbCommand = New OleDbCommand
    Dim sql As String = ""

    If clb_db.CheckedItems.Count > 0 Then
    For Each item In clb_db.CheckedItems
    sql = "SELECT DT FROM empfangen" (DT ist Spalte in Datenbank und empangen die Tabelle)

    Next

    End If

    und irgendwie hänge ich ab hier fest...ich kann aber auch nicht genau erklären warum

    LizardProgrammer schrieb:

    Ich finde auch nirgends beispiele, wie ich am besten bei so einem Problem vorgehen soll.
    Vermutlich deshalb, weil solch Vorgehen höchst ungewöhnlich ist, dem DB-Grundgedanken (Redundanz-Vermeidung) widerspricht, und daher recht fehleranfällig ist:
    "Heute arbeite ich auf Db1, morgen auf Db2, ja nanu - wo sind denn meine Daten von gestern? ach mist - ganz vergessen: Db3"
    Und wenn du dann die scheinbar verlorenen Daten neu eingepflegt hast, und sie tauchen wieder auf - ja, dann ist so richtig Dampf-Kacke, weil wie soll entschieden werden, welche der Dubletten gültig sind?

    LizardProgrammer schrieb:

    und irgendwie hänge ich ab hier fest...ich kann aber auch nicht genau erklären warum


    Dein Codeschnipsel ist völlig unvollständig.
    Mit diesen Informationen fallen mir drei Dinge auf:
    - command.Connection wird nicht zugewiesen
    - command.CommandText wird nicht zugewiesen
    - command.Execute... wird nicht ausgeführt
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --