none
Keine ACCESS 2016 (32Bit) ODBC Verbindungen möglich unter Windows 7 (64Bit)

    Frage

  • Ziel: Mehrere in Tabellen gespeicherte Daten (Bilder (.png, .jpg,...) & andere Daten) gleichzeitig auf einer Web Page (HTML5 CANVAS) anzeigen und Input von einer Web Page, wieder in ACCESS Tabellen speichern.

    Die Web Page möchte ich in einem Access Formular in einem Web Browser Control verwenden, um die graphischen Fähigkeiten des HTML5 CANVAS in einem Access Formular (Bilder zusammen mit generierten Grafiken) verwenden zu können. Damit das funktioniert benötige ich die Microsoft-Access-Engine 2016 Redistrutable. Nach 'kleinen' Schwierigkeiten ist mir die Installation der 32Bit Version gelungen, leider hat aber ACCESS trotz anderes lautender Knowelde Artikeln keine Ahnung von irgendwelchen Treiben ausser dem SQL-Server Treiber, der mir aber nichts nützt. Dabei ist es unerheblich, ob ich es als 'admin' oder als 'normaler' User versuche. Die in den Foren von Microsoft beschrieben Lösungen funktionieren bei mir nicht.

    Fehlermeldung im ODBC-Administrator zB: Die Setup-Routinen für den Microsoft Access Driver (*.mdb, *.accdb) ODBC-Treiber konnten nicht gefunden werden. Installieren Sie den Treiber erneut.

    Vielen Dank im Voraus für eine Lösung.

    Daniel

    Sonntag, 11. Februar 2018 11:04

Alle Antworten

  • Es gibt ein Problem, wenn du sowohl Access als auch zusätzlich die Redistributables in derselben Bit-Version installierst.
    Hast du bereits Access 32-Bit installiert, kannst du nur die 64-Bit-Redist mit der Option "/silent" installieren und anders herum.
    Wobei die Redist von Access selber nie verwendet werden!

    Für den ODBC-Administrator gibt es passend dazu die 32-Bit- und 64-Bit-Version.
    Hier musst du die Verwaltung auswählen mit der deine Anwendung dann später auch läüft.

    Nun kommt ggf. noch hinzu, dass das Web-Browsercontrol auch noch in der passenden 32/64-Bit-Version von Access vorliegen muss.
    Die Web-Page sollte aber nicht selber auf die Access-DB zugreifen, denn auch dies führt ggf. zu Problemen.
    Außerdem ist mit der Access-Installation der OLEDB-Treiber (nicht ODBC!) ja schon vorhanden.

    Bei meiner Access-32-Bit-Installation sind in der ODBC-32-Verwaltung alle Treiber vorhanden.
    Ohne die 64-Bit-Redist fehlen die Treiber in der ODBC-64-Verwaltung.
    • Bearbeitet bfuerchau Sonntag, 11. Februar 2018 11:23
    Sonntag, 11. Februar 2018 11:19
  • Erstmal vielen Dank für Deine superschnelle Antwort.

    Redist 32Bit/64Bit -> Hatte zuerst die 64Bit Version installiert, was damit endete, dass ACCESS 2016 nicht mehr funktionierte und mir Office bei der Reparatur vollständig deinstalliert aber nicht mehr installiert wurde :-(. Ich musste erst die 64Bit Version wieder de-installieren und nachher Office 2016 erneut herunterladen und installieren. Wie auch immer, Office funktioniert jetzt wieder.

    Wen der OLEDB Treiber schon installiert ist, wie kann ich es prüfen und wie müsste der Connection String aussehen?

    <!DOCTYPE html>
    <html>
    <body>

    <canvas id="meinCanvas" width="300" height="300">
    </canvas>
      
    <script>

    var cn = new ActiveXObject("ADODB.Connection");

    ==> Hier folgende F e h l e r m e l d u n g: "Automatisierungserver kann Objekt nicht erstellen."

    var strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Dbq=C:\Users\Daniel\Documents\Database19.accdb;Persist Security Info=False;";

    cn.Open(strConn);

    var rs = new ActiveXObject("ADODB.Recordset");

    var strSQL = "select * from Tbl1";

            rs.Open(strSQL, cn);

            alert(rs(0));

     rs.Close();
            cn.Close();  

    Sonntag, 11. Februar 2018 12:33
  • Aus " Hier folgende F e h l e r m e l d u n g: " werd ich nun nicht schlau.
    Erfolg die beim Create Connection oder beim cn.Open der Datenbank?

    Bei Access hast du generell noch ein weiteres Problem:
    Hat Access die Datenbank bereits geöffnet und enthält neben den Formularen eben auch Tabellen, wird die DB gegen ein 2. Open gesperrt, wenn dieser nicht ReadOnly ist.
    Dies ist bereits bei Dialogaufrufen der Fall (z.B. per 2. Access-Instanz). Hier erfolgt eine Warnung.

    Hast du Access 2016 installiert, heißt der Treiber auch:

    Microsoft.ACE.OLEDB.16.0

    Wie du siehst, ist alles versionsabhängig, die Version 12.0 kommt aus Access 2010.
    Die 12.0 funktioniert nur, wenn du vorher mal die 2010er installiert hattest und unvollständig deinstalliert wurde.

    Kompatibel ist ggf. auch "Microsoft.Jet.OLEDB.4.0" für MDB's.

    Welche Treiber installiert sind, musst du die Registry mal nach dem Schlüssel "OLE DB Provider" durchsuchen. Wo genau sich die zentralen Einträge befinden weiß ich auch nicht.
    Im Pfad "...\WOW64Node32\..." liegen ausschließlich 32-Bit-Treiber.

    Runtimeversion liegen mit "Microsoft Shared"-Verzeichnis, Vollversionen liegen im "Office Programmverzeichnis".
    Wie gesagt, beides parallel geht nicht.

    Wichtig i.Ü. ist auch, falls du eine verteilbare Anwendung schreibst, dass du bei einem anderen System keine höhere Runtime-Version installieren darfst, als als Office-Version bereits vorhanden ist.
    Dies kann dich vor Kompatibilitätsprobleme stellen, da ältere Treiber u.U. eben nur MDB's unterstützen.

    Installierst du neuere Versionen, verlierst du die alte Office-Lizenz, die sich (leider) auch nach einer Deinstallation der Runtime nicht mehr aktivieren ließ.
    Mir ist das leider auf unserem Server passiert.
    Installiert war Office 2010, installiert habe ich die Runtime 2013 und schwubs, war die 2010er Lizenz weg.
    Wir mussten dann zähneknirschend auf die 2016 upgraden.

    Sonntag, 11. Februar 2018 19:08
  • Nachtrag:
    Hast du nun Access-32 oder Access-64-Bit im Einsatz?

    Ich habe mir unter Access noch mal das "Microsoft Web Browser"-Control angesehen.
    Es könnte sein, da es als OLE-Objekt auftritt, dass es ein sog. Out-Of-Process ist und somit in einer anderen Prozessart (32/64) läuft.

    Montag, 12. Februar 2018 08:19