Databinding Access-DB

  • VB.NET
  • .NET 7–8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von woofy49.

    Databinding Access-DB

    Neu

    Ich finde den Fehler nicht - bitte um eine Idee:
    Eine "TestTabelle" einer Access-DB (64 bit) wird per code in ein Programm eingebunden.
    In der Vorschau des TableAdapters (siehe Screenshot) werden die Daten (ID sowie drei Spalten VariableA, -B, -C)
    angezeigt. Während des Programm-Ablaufs bricht das Programm jedoch mit der Fehlermeldung ab:
    "Der 'Microsoft.ACE.OLEDB.12.0.'-Provider ist nicht auf dem lokalen Computer registriert."
    Nach meiner Recherche deutet dies darauf hin, dass ein 32-Bit-Programm geladen werden muss. Dies scheitert aber daran,
    dass eine Parallel-Installation (32-64-Bit) nicht möglich ist (und vorgeschlagene Registry-Änderung: ..../quiet
    traue ich mir nicht zu).
    Was ich nicht verstehe ist, dass ja offenbar die Anbindung an die TestTabelle funktioniert,
    sonst erhielte ich ja keine Vorschau-Werte. Wozu also soll dieses Zusatzprogramm notwendig sein.
    Wie komme ich darum herum, in der Registry Änderungen vorzunehmen?
    Danke Euch für Vorschläge !
    Bilder
    • ScreenshotVorschauFenster.jpg

      175,85 kB, 1.920×1.080, 18 mal angesehen

    Neu

    woofy49 schrieb:

    Während des Programm-Ablaufs bricht das Programm jedoch mit der Fehlermeldung ab:
    "Der 'Microsoft.ACE.OLEDB.12.0.'-Provider ist nicht auf dem lokalen Computer registriert."
    Welchen Connectionstring verwendest du da?
    Versuche dein Programm unter Plattform x86 zu erstellen - vlt. hilft das...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB1963“ ()

    Neu

    Hier der ConnectionString:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\VB_Daten\TestDatenBankNeu_X_24.accdb"

    Dim sql As String = "SELECT * FROM TestTabelle"

    Try

    Using connection As New OleDbConnection(connectionString)
    Dim command As New OleDbCommand(sql, connection)
    connection.Open()

    Dim adapter As New OleDbDataAdapter(command)
    Dim dataset As New DataSet()
    adapter.Fill(dataset)

    DataGridView1.DataSource = dataset.Tables(0)
    End Using
    Catch ex As Exception
    MessageBox.Show("Fehler beim Laden der Daten: " & ex.Message)
    End Try
    End Sub

    Der Abbruch (mit der eingangs kopierten Fehlermeldung) erfolgt bei Anclicken des Button1:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Try
    TestTabelleTableAdapter.Fill(Me.TestDatenbankNeu_X_24DataSet.TestTabelle)
    Catch ex As System.Exception
    System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try
    End Sub

    Die Umstellung auf x86-Plattform hat leider keine Änderung ergeben.
    Danke für Eure bisherige Hilfe !

    Neu

    Aber die Load funktioniert ohne Fehler?

    Ich hätte gesagt du musst auf 64bit schalten. Dein PC wird sicher 64 bit sein, das ist ja heute eher der Standard.
    Aber wenn die Vorschau das hinkriegt, dann wird es auch irgendwie dynamisch zu regeln sein.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()

    Neu

    @woofy49
    Im Load-Ereignis hast du schön einen Adapter mit Using und angegebenen Connectionstring zusammen gebaut, der funktioniert...
    Aber beim ButtonClick-Ereignis verwendest du einen voreingestellten TestTabelleTableadapter.
    Was ist mit dem, der ja kracht?
    Verwende bitte die Codetags bei den Codelistings, damit die besser lesbar sind.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VB1963“ ()

    Neu

    Im (gefühlt) zwanzigsten Versuch ist es nun gelungen. Leider kann ich (wg. "Brummschädel") nicht erkennen bzw. mitteilen, was ich anders als bisher gemacht habe. Jedenfalls kommt die Fehlermeldung (mit dem "nicht registriert") nicht mehr, die Daten werden im DGV angezeigt und es funktioniert, so dass ich mich an die eigentliche Arbeit machen kann. Übrigens mit der normalen Einstellung ("Any CPU" - also auf 64 Bit-Basis).
    Vielen Dank für Eure Hilfe und Anregungen!