DAO-Fehler nach Migration zu A2007Wer 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.
FehlerbeschreibungDer Einsatz von bestimmten DAO-Methoden wie NoMatch, FindFirst und anderen führt zum Laufzeitfehler "Fehler beim Kompilieren: Methode oder Datenobjekt nicht gefunden". FehlerbehebungImgrunde 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: - 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).
- 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.
|