none
Access-Applikationen-Verteilung RRS feed

  • Frage

  • Hallo Community und MVPs,

    mal eine "blöde" Frage, wobei es ja "blöde" Fragen es ja nicht gibt :)

    Auf eine Access-Datenbank lässt sich aus anderen Programmen, spezieller: Entwicklungsumgebungen wie C#, bekanntlicherweise ebenso darauf zugreifen. Hierfür habe ich die Microsoft Office 16.0 Access Database Engine Object Library (Typelibrary verweist ja auf die ACEDAO.DLL) ausgewählt.

    Mir ist bekannt, dass auf Computern ohne Access zuvor das Microsoft Access Database Engine 2016 Redistributable bzw. die Runtime installiert werden muss. Aber dazu hier meine 2 Fragen:

    a) Große Ganzzahlen werden erst ab Access 16.0.7812 unterstützt - oder besser gesagt - schon seit 16.0.7812 unterstützt. Das Redistributable kann diese Datenbanken aber bis heute nicht öffnen. Gibt es hierfür einen Patch/Update oder Lösung?

    b) In einem Forum habe ich als Workaround gelesen, dass man hierfür Access 2016/2019 Vollinstallation benötigt, um diese Datenbanken öffnen zu können. Aber auch wenn das Office-Paket (natürlich inkl. Access) auf dem selben Computer installiert ist (bei mir 2019), dann werden die Verweise auf die Interfaces von acedao.dll nicht gefunden, obwohl die Datei eigentlich mitinstalliert wurde. Erst eine zusätzliche Installation des Redistributable löst das Problem. Eine manuelle Registrierung via regsvr32 von acedao.dll wird mit einer Fehlermeldung "Das Betriebssystem ist momentan nicht zum Ausführen dieser Anwendung konfiguriert" quittiert.

    Wie soll also eine Applikation weitergegeben werden, die a) BigInts verwendet und b) wieso wird trotzdem das Redistributable benötigt obwohl Access installiert ist?

    Ich hoffe jemand weiß hier näheres




    Freitag, 26. Juni 2020 11:30

Alle Antworten

  • Hallo,

    a) Große Ganzzahlen werden erst ab Access 16.0.7812 unterstützt - oder besser gesagt - schon seit 16.0.7812 unterstützt. Das Redistributable kann diese Datenbanken aber bis heute nicht öffnen. Gibt es hierfür einen Patch/Update oder Lösung?

    Dazu kann ich im Moment nichts sagen, werds mir aber anschaun.

    b) In einem Forum habe ich als Workaround gelesen, dass man hierfür Access 2016/2019 Vollinstallation benötigt, um diese Datenbanken öffnen zu können. Aber auch wenn das Office-Paket (natürlich inkl. Access) auf dem selben Computer installiert ist (bei mir 2019), dann werden die Verweise auf die Interfaces von acedao.dll nicht gefunden, obwohl die Datei eigentlich mitinstalliert wurde. Erst eine zusätzliche Installation des Redistributable löst das Problem. 

    Das Thema hatten wir vor kurzem hier schon mal. Lt. Aussage der Entwicklung arbeitet man an einer Lösung, nach der die ODBC-Schnittstelle in Office365 von außen ansprechbar wird und damit das Redist-Paket nicht mehr installiert werden muss, wenn die Vollversion vorhanden ist. Als Zeitraum wurde "demnächst" angegeben, wann immer das sein wird.

    Gruss - Peter


    Mitglied im www.dbdev.org
    Access-FAQ: www.donkarl.com


    Samstag, 27. Juni 2020 09:44
    Moderator
  • a) Große Ganzzahlen werden erst ab Access 16.0.7812 unterstützt - oder besser gesagt - schon seit 16.0.7812 unterstützt. Das Redistributable kann diese Datenbanken aber bis heute nicht öffnen. Gibt es hierfür einen Patch/Update oder Lösung?

    Dazu kann ich im Moment nichts sagen, werds mir aber anschaun.

    Es ist tatsächlich so, dass das Redist-Paket auf Basis Access 2016 MSI erstellt worden ist, und damit von weiteren funktionalen Neuerungen ausgeschlossen ist, im Gegensatz zu CTR (Click-To-Run). Bugfixes bekommt es natürlich trotzdem.

    Der Workaround für dich könnte sein, nicht per ODBC sondern OLEDB (ADO) auf die accdb zuzugreifen. Falls du den Weg gehst, berichte hier bitte wieder, ob es mit BigInt geklappt hat.

    Gruss - Peter

    Mitglied im www.dbdev.org
    Access-FAQ: www.donkarl.com


    Sonntag, 28. Juni 2020 14:35
    Moderator
  • Hallo Peter,

    ich bin jetzt etwas verwirrt...

    Microsoft Office 16.0 Access Database Engine Object Library ist doch die "Low Level" (COM) Schnittstelle von Access bzw. die Schnittstelle speziell für Access. Hat natürlich den Nachteil, dass die Schnittstelle sich nicht einfach austauschen lässt, falls man doch eine andere Datenbank als Backend wünscht. Vorteil jedoch, dass auf alle Access spezifischen Daten zugreifen lassen. ADO(.NET) und ODBC(-Treiber) sind für mich eine Abstraktionsebene höher anzusehen. Aber ich verwende ja direkt die (COM-)Schnittstelle.

    Lange Rede kurzer Sinn: Ich verwende doch eigentlich gar kein ODBC.

    Viele Grüße


    Montag, 29. Juni 2020 09:43
  • Hallo,

    Von COM hattest du im OP nichts geschrieben und vor einiger Zeit hatten wir hier eine ähnliche Diskussion um ODBC/OLEDB, deshalb meine Schlussfolgerung, aber egal.

    Kannst du ein paar Zeilen Code posten (einschl. Deklaration)?

    Gruss - Peter


    Mitglied im www.dbdev.org
    Access-FAQ: www.donkarl.com


    Montag, 29. Juni 2020 17:46
    Moderator
  • Hallo Peter,

    es liegt ja in dem Sinne nicht am Code. Die COM-Komponente wurde über verweise ganz gewöhnlich eingebunden. Ab da kann man ja die Objekte anlegen und darauf zugreifen. Beispielsweise new Engine().

    Die Probleme fangen erst an, wenn wenn die Anwendung verteilen will. Wird versucht eine Datenbank auf dem Ziel-Computer (ohne Access) mit einem BigInt-Typ zu öffnen, bekommt man einen Ausnahmefehler von COM (welche natürlich in C# abgefangen wurde).

    Aber selbst wenn eine Vollinstallation vorhanden ist, wird die benötigte COM-Komponente (welche in der Entwicklungsumgebung ein Verweis hinzugefügt wurde) nicht gefunden.


    Beides sehr unschön. Wobei das zweite Problem noch dahingehend gelöst werden kann, dass das Redistributable eben immer installiert werden muss (auch wenn Access bereits vorhanden ist). Doch wenn das Redistributable "veraltet" ist, können keine externen Applikationen erstellt werden, welche eine Datenbank öffnen wollen, die einen BigInt intus haben.


    Montag, 29. Juni 2020 18:14
  • Hallo,

    Ich hatte keine Bugs im Code vermutet, wollte nur sicherstellen, dass es kein Verständnisproblem gibt.

    Zwischenzeitlich hat Microsoft die Roadmap aktualisiert. Sieht nach Juli 2020 aus, d.h. dass du auf Rechnern keine Redist mehr brauchst, wenn die Vollversion installiert ist.

    Gruss - Peter


    Mitglied im www.dbdev.org
    Access-FAQ: www.donkarl.com


    Dienstag, 30. Juni 2020 18:01
    Moderator