PDA

Vollständige Version anzeigen : bin am verzweifeln bei Fehlermeldung Access200


Bernhard_Einhaus
17.06.2001, 19:40
Hallo,
bin schier am verzeifeln finde den Fehler einfach nicht.
Er meldet beim nachstehenden Code immer Laufzeitfehler 13, unverträgliche typen
ich kann aber nichts feststellen.
Bitte helft mir ich komme sonst nicht weiter
Hier der code:

Public Function dummyupdate1()
Dim db As Database, a As Recordset, b As Recordset

Set db = CurrentDb()

Set db = DBEngine.Workspaces(0).Databases(0)

(=hier kommt die Fehlermeldung =)
Set a = db.OpenRecordset("Merkmaldummy", dbOpenDynaset)
Set b = db.OpenRecordset("Merkmalendergebnis", dbOpenDynaset)


a.MoveFirst
Do Until a.EOF

b.AddNew

b!merker = a!Merkmal

b.Update

a.MoveNext
Loop

a.Close
b.Close


End Function

Vielen Dank für eure Hilfe. Bin noch nicht Access2000 erfahren. In 97 habe ich schon vieles entwickelt aber jetzt bin fast am Ende

Gruss

Bernhard

GustavKurz
17.06.2001, 20:32
Hallo, Bernhard!

Solche Fehlermeldungen hatte ich auch schon
Geh mal im VBA-Fenster auf Extras-Verweise und prüfe:
1.Kontrollkästchen muß sein "Visual Basic for Applications"
2. Kontrollk. muß sein "Microsoft Access 9.0 Object Library"
3.Kontrollk. muß sein "Microsoft DAO 3.6 Object Library"
4.Kontrollk. muß sein "OLE Automation"
5.Kontrollk. muß sein "Microsoft Visual Basic for Applications Extensibility 5.3"

Wenn es nicht so ist, ändern und ggfalls Priorität ändern (Reihenfolge)
Dann müssts gehen

Gruß
Gustav Kurz

Günni
17.06.2001, 20:47
Das Problem ist, dass Access 2000 von Hause aus ADO verwendet, Du aber gleichzeitig auch DAO verwendest. Sowohl in ADO als auch in DAO gibt es nun aber dummerweise ein Recordset-Objekt. Beide sind aber leider nicht kompatibel. So wie es aussieht, steht in der Liste der Verweise bei Dir die ActiveX-Dataobject-Libaray vor der DAO Bibliothek. Deshalb wird mit der Anweisung

Dim a As Recordset

ein ADO-Recordset erzeugt. Du versuchst später aber, dieser Variable ein DAO-Recordset zuzuweisen. Lösung: Deklariere das Recordset ausdrücklich als DAO Recordset:

Dim a As DAO.Recordset

dann klappts. Nur zur Info: Wenn Du ein ADO Recordset anlegen möchstest, würde die explizite Deklaration:

Dim a As ADODB.Recordset

lauten. Beim Database-Objekt hat er übrigens keine Schwierigkeiten, weils das in ADO nicht gibt. Deshalb weiß Access, dass es hier DAO einsetzen muß.

A.S.
17.06.2001, 21:17
Hallo Günni,

durfte heute "lernen"... Allein das Hochsetzen des DAO-Verweises auf eine Stufe vor dem ADO-Verweis, scheint nicht automatisch das gewünschte Ergebnis zu bringen. Entweder habe ich noch einen Schritt vergessen. Oder der Compiler will auch dann noch den explizieten Verweis auf das DAO-Object in der Form

Dim db As DAO.Database
Dim rs As DAO.Recordset

------------------
HTH

Arno

Bernhard_Einhaus
17.06.2001, 21:22
Hallo Günni, Hallo Gustav
vielen Dank für eure Hilfe. Jetzt funktioniert es bei mir.

Ich habe Dank Günni's tollen Erklärung
alles innerhalb von 1 Minute ans Laufen bekommen. Hatte vorher wohl 5-6 Stunden ausprobiert und konnte mir keinen Reim darauf machen.

Vielen Dank noch mal bis bald

Bernhard_Einhaus