ConnectionString AccessDB anstelle 'Data Source='; 'DSN=' verwenden? : Lösung!

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von affrop.

    ConnectionString AccessDB anstelle 'Data Source='; 'DSN=' verwenden? : Lösung!

    Einen Wunderschönen Guten Morgen an diesem herrlichen Mittwoch wünsche ich Euch...
    Und schon kommt meine Frage auf die ich seit 2 Tagen intensiver Google-Recherschen keine Antwort finde.
    Vorweg: Der Zugriff aus VB.NET mittels "Data Source" klappt hervorragend!

    Auf meinem System ist ein ODBC32-DSN Treiber für eine Access Datenbank angelegt. Folgender Zugriff funktioniert fehlerfrei:

    VB.NET-Quellcode

    1. DBcon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\<MyPath>\MyAccessDB.accdb;"


    Ich will aber aus verschiedenen Gründen den Zugriff über die angelegte ODBC-DSN Schnittstelle herstellen.
    (Der Hauptgrund ist sicherlich der, weil ich den Pfad der Accessdatenbank nicht direkt in meinem Code einbinden will, sondern die Datenquelle verwenden möchte, welche im DSN hinterlegt ist!).

    Das klappt zum Beispiel nicht:

    VB.NET-Quellcode

    1. DBcon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;DSN=DxDBAccessDB1;"


    Wobei "DxDBAccessDB1" der Name meiner DSN Verbindung ist.

    Weiß jemand Rat? Evtl. Die Data Source aus der DSN Verbindung auslesen, dann kann ich auch wieder den oben bereits funktionierenden String herstellen...

    ---------------------------------
    NACHTRAG: LÖSUNG!
    Himmel nochmal. Habe kurz nach veröffentlichen dieses Themas doch eine Antwort gefunden...
    Hier ist sie (für alle leidtragenden die auch danach suchen)... Der Trick ist

    VB.NET-Quellcode

    1. New Odbc.
    und das FIL=

    Und das ist die Lösung:

    VB.NET-Quellcode

    1. Private odbcCon As New Odbc.OdbcConnection("FIL=MS Access;")
    2. odbcCon.ConnectionString = "DSN=DxDBAccessDB1;"
    3. odbcCon.open()
    4. '...


    LÖSUNGSNACHTRAG 2: Und das Beste an der Sache, das FIL= kann man auch noch gleich weglassen, auch so gehts:

    VB.NET-Quellcode

    1. Private odbcCon As New Odbc.OdbcConnection
    2. odbcCon.ConnectionString = "DSN=DxDBAccessDB1;UID=;PWD=;"

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Hinti“ ()

    erstmal einen wunderschönen zurück :)

    im grunde ist es egal ob du im connstring die datasource oder dein dsn einträgst, weil DSN=Data Source Name. wichtig ist, dass das was du im connstring reinschreibst am ende einen kompletten und korrekten dateipfad auf dem ordnersystem darstellt.

    lies einfach vorher den dsn-treiber aus und speicher das ergebnis in ner variable, die du dann in den connstring setzt.

    VB.NET-Quellcode

    1. Dim strDB as String 'DB-Pfad aus dem Treiber oder HKCU
    2. DBcon.ConnectionString = "Provider=Microsoft.ACE.ELEDB.12;" & strDB


    übrigens wenn es sich um benutzer-dsns handelt werden die hier abgespeichert: HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

    das ist der sicherste weg