vor kurzem habe ich Access 2000 installiert und war ja etwas „geschockt“. Ich habe mir für ein Formular eine VBA-Programmierung zurechtgemacht, die halt in einer Tabelle bestimmte Datensätze bearbeiten sollte. Das grobe Quelltextgerüst sah ungefähr so aus
dim rstAdressen as Recordset
set rstAdressen = currentdb().openrecordset(„tblAdressen“, dbopendynaset)
Da kam schon die erste Überraschung. In Access 97 hat VBA mir den Ausdruck dbopendynaset automatisch formatiert, also als internes Wort erkannt. Access 2000 macht das nicht. Dann aber kam die richtige Überraschun. Ich gab folgende Zeile ein:
rstAdressen.FindFirst strSuche
Nach dem Punkt klappte auch wie gewohnt die Liste mit Methoden usw. auf, jedoch gab es FindFirst nicht mehr, nur noch Find. Interessant st, dass ich testweise mal eine mit 97 erstellte Datenbank konvertierte und dort den VBA-Text editierte. Dort wurde FindFirst aufgeführt. Auch kennt 2000 den Datentyp „Database“ angeblich nicht mehr, denn
dim db as Database
geht auch nicht mehr.
Was ist da los? Kann ich vielleicht Access 2000 deinstallieren und die 97er Version wieder installieren oder beisst sich das mit dem Rest von Office 2000?
Vermutlich stimmt irgendetwas mit deinen Objektbibliotheken nicht. Schau mal unter Extras/Verweise nach „broken Links“ (also nicht gefundenen Verweisen bzw. Objektbibliotheken). Oft steht noch die alte Utility97.MDA drin - die solltest du rauswerfen und durch die aktuelle Version ersetzen.
P r o b l e m
Du bekommst in A00 bei Code wie
Dim db As database oder Dim rs as recordset
einen Kompilierfehler - „Benutzerdefinierter Typ nicht definiert“ o.ä.
U r s a c h e
Standardmäßig ist bei der Neuanlage von Datenbanken in A00 ADO
als Bibliothek für Datenzugriffe eingestellt.
Die meisten Access-Programmierer arbeiten aber weiterhin mit DAO.
Der Verweis auf DAO fehlt also oder die Priorität des Verweises auf ADO ist höher.
L ö s u n g e n
Lösungsvariante
Modul öffnen, Menü Extras/Verweise, Verweis auf DAO 3.6 setzen,
die Priorität des Verweises mit Hilfe der Pfeiltasten höher setzen
als die des ADO-Verweises. Bei Nichtverwendung von ADO kann der
Verweis darauf auch rausgenommen werden.
und gründlichere Lösungsvariante
Wie o.a. Verweis auf DAO 3.6 setzen und explizit deklarieren, auf
welche Bibliothek du dich berufst. Höchstwahrscheinlich auf DAO, also
Dim db as DAO.Database
Dim rs as DAO.Recordset
etc.