Open recordset in Access 2003/2007
Es ist Jahre her, seit ich gearbeitet habe, in Access-code, und es macht mich offensichtlich wahnsinnig.
Ich einfach nicht an alles erinnern und alles was ich will zu tun ist, öffnen Sie ein recordset im code und nichts, was ich im Netz gefunden habe oder jede permutation der code, den ich versucht habe funktioniert.
Die Kurzfassung:
Dim rsSystem As Recordset
Dim sSQL As String
sSQL = "SELECT * FROM Table"
Set rsSystem = CurrentDB.OpenRecordset(sSQL)
Was in der Heiligen Hölle bin ich?
Vielen Dank im Voraus.
Bekomme ich einen type-mismatch-Fehler auf der OpenRecordset-Methode. Ich bin mit dem code, wie oben gezeigt, keine DAO-oder ADODB-Qualifikanten.
Wenn Sie in ein code-Fenster öffnen Extras/Verweise aus der Menüleiste bringt Sie zum Referenzen - dialog.
Ah, danke
Wenn Sie in ein code-Fenster öffnen Extras/Verweise aus der Menüleiste bringt Sie zum Referenzen - dialog.
Ah, danke
InformationsquelleAutor Tom | 2011-05-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beispiele hier, für alle Permutationen der Eröffnung ein "Recordset":
http://www.vbexplorer.com/VBExplorer/vb_feature/june2000/Database_Beginner_ADO_DAO.asp
Der einfachste Weg ist die Verwendung von DAO auf die aktuelle Datenbank. Mein VBA ist ein wenig rostig, aber...
Für ADO:
Ok, habe ich nicht, fügen Sie einen Verweis auf DAO? Ich kann nicht finden, überall zu tun, die in Access 2010.
Versuchen Sie die ADO-ich Hinzugefügt, oben.
Ja, das hat für mich und funktioniert am besten für mich. Es kommt alles zurück zu mir jetzt, für besser oder schlechter.
Sie müssen nicht unbedingt brauchen, eine DAO-Referenz, aber wenn Sie es nicht haben, verwenden Sie Objekt-Datentypen für Ihre Variablen (anstelle von Datenbank-und Recordset). Aber es ist verrückt, zu keinen DAO-Verweis, da Sie mit Access!
InformationsquelleAutor Robert Harvey
Wenn Sie erklären, nur ein
Recordset
ohne Angabe, ob es DAO oder ADO, Access entscheidet allein, ob es DAO oder ADO, je nach der Reihenfolge der Referenzen:Öffnen Sie ein code-Fenster, gehen Sie auf Extras --> Referenzen und betrachten Sie die Liste.
Es wird so Aussehen, dass:
Sehen Sie, dass in diesem Beispiel gibt es einen Verweis auf DAO ("Microsoft DAO 3.6 Object Library") und ADO ("ActiveX Data Objects 2.5 Library").
Wenn Sie erklären Ihre Recordset ohne Angabe der Art, der Zugang nimmt die erste dieser Referenzen (=die eine, die mehr auf der Liste ganz oben) und erstellt ein Recordset von diesem Typ.
So in diesem Beispiel, es wird ein
DAO.Recordset
.Nun zurück zu deiner Frage:
Erklären Sie die Recordset-ohne Angabe des Typs.
Also, wenn die erste Referenz in Ihre Access-Datenbank, ADO, Access erstellen Sie eine
ADODB.Recordset
.Dann öffnen Sie es mit einer DAO-Methode, die erwartet, dass ein
DAO.Recordset
, und das ist, warum Sie den Fehler.Gibt es zwei Möglichkeiten, um Ihr problem zu lösen:
DAO.Recordset
oderADODB.Recordset
um sicherzustellen, dass es wirklich von der Art, dass Ihr code erwartet.InformationsquelleAutor Christian Specht
Entscheiden, ob Sie ADO oder DAO? Hier ist ein DAO (mehr native Access/Jet) Beispiel
Nicht sicher, was Sie tun möchten, mit diesem recordset.
InformationsquelleAutor JeffO
Sowohl die ADO-und DAO-Objekt-Modelle für Recordset-Objekte. Kann man nicht vertauschen.
Da Sie nicht angegeben haben, die Sie wollten, Ihnen könnte ein ADO-Recordset ... was würde das Konto für den "type mismatch" - Fehler auf der OpenRecordset-Methode.
Diese Methode gibt eine DAO Recordset, also erstmal erklären rsSytem als solche.
Wenn ich verstehen Ihren Kommentar oben, Sie beschlossen zu gehen mit ADO, das ist einfach falsch. Es gilt zu reflektieren, was MS war die Förderung von vor 10 Jahren, aber Sie waren falsch, so zu tun, und haben da angehalten, der Förderung von ADO gegenüber DAO für den Einsatz in Access-Jet/ACE/ODBC-Daten.
InformationsquelleAutor HansUp
"Tabelle" ist ein reserviertes Wort in SQL. Wenn Sie den Namen Ihrer Tabelle "Tabelle", dann schließen Sie Sie in eckige Klammern:
"SELECT * FROM [Table]"
.InformationsquelleAutor harfang