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

    LizardProgrammer schrieb:

    Ich will nicht mit DataSource arbeiten, wo die Datenbanken
    per pfad ausgewählt werden.

    LizardProgrammer schrieb:

    (Listview und keine DataGridVIew!)

    Gibt es dafür rationale Begründungen?
    Abgesehen davon, wie willst du die Datenbank nicht per Pfad auswählen?
    Post-AGB:
    §1 Mit dem Lesen dieses Posts stimmst du den AGB unverzüglich zu
    §2 Ein Widerruf muss innerhalb von 3 Sekunden nach Lesen des Hauptbestandteil des ersten jemals gelesenen Posts erfolgen
    Abs.1 Die Signatur zählt nicht zum Hauptbestandteil des Posts
    §3 Ein erfolgreicher Widerruf zwingt zu einem Besuch bei einem Hypnotiseur oder Neurochirurg, sodass der gelesene Text aus den Erinnerungen entfernt werden kann
    Abs.1 Die Kosten und Risiken sind jeweils selbst zu tragen
    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?
    Post-AGB:
    §1 Mit dem Lesen dieses Posts stimmst du den AGB unverzüglich zu
    §2 Ein Widerruf muss innerhalb von 3 Sekunden nach Lesen des Hauptbestandteil des ersten jemals gelesenen Posts erfolgen
    Abs.1 Die Signatur zählt nicht zum Hauptbestandteil des Posts
    §3 Ein erfolgreicher Widerruf zwingt zu einem Besuch bei einem Hypnotiseur oder Neurochirurg, sodass der gelesene Text aus den Erinnerungen entfernt werden kann
    Abs.1 Die Kosten und Risiken sind jeweils selbst zu tragen
    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
    --
    Und Connection.Open wird auch nirgends aufgerufen um eine Verbindung mit der Datenbank herzustellen.
    Post-AGB:
    §1 Mit dem Lesen dieses Posts stimmst du den AGB unverzüglich zu
    §2 Ein Widerruf muss innerhalb von 3 Sekunden nach Lesen des Hauptbestandteil des ersten jemals gelesenen Posts erfolgen
    Abs.1 Die Signatur zählt nicht zum Hauptbestandteil des Posts
    §3 Ein erfolgreicher Widerruf zwingt zu einem Besuch bei einem Hypnotiseur oder Neurochirurg, sodass der gelesene Text aus den Erinnerungen entfernt werden kann
    Abs.1 Die Kosten und Risiken sind jeweils selbst zu tragen