Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: boris64 am Juli 17, 2012, 14:24:55

Titel: Compilerfehler beim Umstieg von 2003 auf 2010
Beitrag von: boris64 am Juli 17, 2012, 14:24:55
Hallo,

Bei der Umstellung einer Access-DB von 2003 auf 2010 gibt es an diversen Stellen Compilerfehler,
zB bei
Dim rs as Recordset
rs.FindFirst ...

FindFirst ist unbekannt. Mir ist der Grund schon teilweise bekannt. Es fehlt die explizite Deklaration
Dim rs as DAO.Recordset
Wenn man das ändert, geht alles.
Trotzdem verstehe ich das eigentliche Problem nicht ganz und wäre sehr dankbar, wenn es mir jemand erklären könnte:

- Warum kommt der Compilerfehler überhaupt? (Geht "Dim rs as Recordset" implizit nicht auf DAO, sondern auf ADO?)
- Was ist, wenn auch zb auf TableDef, QueryDef, Database referenziert wird. Kann man dort auch gefahrlos auf DAO.xxx gehen?
- Was ist, wenn man aus Versehen mischt, also zB von der DATABASE einen Recordset holt, den aber auf eine DAO.RecordSet variable zuweist?

Vielen Dank im Voraus!


Titel: Re: Compilerfehler beim Umstieg von 2003 auf 2010
Beitrag von: database am Juli 17, 2012, 14:51:12
Hallo,

der Grund ist in den Verweisen zu suchen.
In der neuen Access-Version findest du dort die MS Office 14.0 Access Database Object Library aktiviert.
Nimm die raus und setze dafür einen Verweis auf Microsoft DAO 3.6 Object Library Danach sollten die Compilerfehler wieder verschwinden - sofern es sich um die 32 Bit Version von Access handelt.

HTH
Titel: Re: Compilerfehler beim Umstieg von 2003 auf 2010
Beitrag von: boris64 am Juli 17, 2012, 15:11:20
Hallo,

hier scheint es diese Library nicht zu geben.
Es gibt "Microsoft Access 14.0 Object Library", die kann aber nicht entfernt werden
(Fehler: "Verweis oder Steuerelement wird zur Zeit verwendet und kann daher nicht entfernt werden)

Ausserdem gibt es eine
"Microsoft Office 14.0 Access database engine Object Library"
Ist das die, die du meinst? Ist das der 2010er "Ersatz für DAO"?

Diese kann man entfernen und wenn man dann DAO 3.6 dazuholt und höher priorisiert als die "Microsoft ActiveX Data Objects 2.1 library", dann geht es.
Aber: denselben Effekt habe ich auch, wenn ich "Microsoft Office 14.0 Access database engine Object Library" höher als "Microsoft ActiveX Data Objects 2.1 library" priorisiere.

D.h. es liegt nicht daran, ob man DAO 3.6. hat oder nicht.
Gleichzeitig heisst es doch aber auch, dass DAO in der "Microsoft Office 14.0 Access database engine Object Library" enthalten ist, oder?
Oder sehe ich das falsch?




Titel: Re: Compilerfehler beim Umstieg von 2003 auf 2010
Beitrag von: DF6GL am Juli 17, 2012, 15:21:27
Hallo,

"Microsoft Office 14.0 Access database engine Object Library"  ist die neue (MS sei es gedankt) Bezeichnung für das DAO-Zugriffsobjekt in neuer Version (Die Jet hat sich ja auch geändert).  Schau mal in den Objektkatalog.


Nichtsdestoweniger ist es mangelnde Programmierarbeit, auf die "Default"-Referenzierung zu setzen anstatt konsequent und überall die explizite anzuwenden.
Titel: Re: Compilerfehler beim Umstieg von 2003 auf 2010
Beitrag von: boris64 am Juli 17, 2012, 15:27:11
Vielen Dank!

Was würdest Du denn als Umstieg empfehlen?

Alle Referenzen auf DAO.Recordset ändern
(plus: dassselbe für alle TableDef, QueryDef, Database?)

Oder ist es generell besser, die "Microsoft Office 14.0 Access database engine Object Library"
höher als die "Microsoft ActiveX Data Objects 2.1 library" zu priorisieren?


Gruss
Titel: Re: Compilerfehler beim Umstieg von 2003 auf 2010
Beitrag von: boris64 am Juli 17, 2012, 15:27:54
oder gar "Microsoft Office 14.0 Access database engine Object Library" rauswerfen und DAO 3.6 benutzen?
Titel: Re: Compilerfehler beim Umstieg von 2003 auf 2010
Beitrag von: DF6GL am Juli 17, 2012, 15:33:34
Hallo,


empfehlen würde ich die Änderung auf explizite Referenzierung...... Das kostet im Nachhinein Aufwand, wäre aber ein "fundierter" Weg zu fehlerreduziertem Code....

Alles Andere führt irgendwann, wenn z. B. in einer anderen Version die Priorität nicht passt oder gar der Verweis auf die richtige Library fehlt, wieder zum gleichen Frust über diese "Fehlfunktion"


Wenn schon mit A2010  und DAO gearbeitet wird, dann nimm auch das DAO-Objektmodell mit der Version, das bei A2010 dabei ist.
Titel: Re: Compilerfehler beim Umstieg von 2003 auf 2010
Beitrag von: boris64 am Juli 17, 2012, 15:36:46
thx.

Ich seh das auch so.
Leider stammen die Access-DB's um die es mir geht, nicht von mir, sondern von "unbedarften" Usern, denen der Unterschied zwischen Recordset und DAO.Recordset (zu recht) schnurzpiepegal ist.
Und meistens funktioniert es ja auch über Jahre ohne Probleme, bis ... ja bis zur nächsten Office-Version...

In diesem Sinne: Danke für die Hilfe, und bis zur nächsten Office-Version!