Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

DAO-Fehler nach Migration zu A2007

Wer seine Anwendung von Access 2003 oder ältern nach Access 2007 migriert, stößt möglicherweise auf Fehler beim Ausführen von DAO-Methoden oder dem Aufruf von DAO-Eigenschaften. Dieses Problem ist viel banaler, als man denkt und lässt sich in Sekunden beheben.

Fehlerbeschreibung

Der Einsatz von bestimmten DAO-Methoden wie NoMatch, FindFirst und anderen führt zum Laufzeitfehler "Fehler beim Kompilieren: Methode oder Datenobjekt nicht gefunden".

Fehlerbehebung

Imgrunde handelt es sich bei dem Fehler um eine alte Geschichte: Die Anwendung enthält Verweise auf die beiden Bibliotheken für den Datenzugriff (DAO und ADODB), die im Verweise-Dialog der alten Version in der richtigen Reihenfolge angelegt sind (hier: erst DAO, dann ADODB). Wenn man dann nach Access 2007 migriert, schmeißt Access den DAO-Verweis raus und fügt den neuen ACEDAO-Verweis ein, der zwar abwärtskompatibel ist, aber hinter dem ADODB-Verweis einsortiert wird. Hat der Anwender nun ein Recordset-Objekt mit der Anweisung

Dim rst As Recordset

deklariert, geht Access davon aus, dass es sich um ein ADODB-Objekt handelt, da diese Bibliothek im Verweise-Dialog ganz oben steht.

Das Problem lässt sich auf zwei Arten beheben:

  1. Die schnelle Methode: Man verschiebt einfach den ACEDAO-Verweis (Bibliothek Microsoft Office 12.0 Access Database Engine Object Library) nach oben, und zwar über den ADODB-Eintrag (Bibliothek Microsoft ActiveX Data Objects 2.1 Library).
  2. Die aufwendigere, aber bessere Methode: Man deklariert Objekte unter Angabe der Bibliothek, in der sie enthalten sind, also beispielsweise mit Dim rst As DAO.Recordset. Die Reihenfolge der Verweise im Verweise-Dialog sind dann völlig unwichtig.

© 2003-2010 André Minhorst Alle Rechte vorbehalten.