Ouvrir le jeu d'enregistrements dans l'Accès 2003/2007
Cela fait des années depuis que je travaille dans code d'Accès et il me rend totalement fou.
Je ne me souviens pas de quoi que ce soit et tout ce que je veux faire est d'ouvrir un jeu d'enregistrements dans le code et rien de ce que j'ai trouvé en ligne ou toute permutation de code que j'ai essayé fonctionne.
Le court de celui-ci:
Dim rsSystem As Recordset
Dim sSQL As String
sSQL = "SELECT * FROM Table"
Set rsSystem = CurrentDB.OpenRecordset(sSQL)
Ce qui, dans le saint de l'enfer qui me manque?
Merci d'avance.
- Je reçois une erreur d'incompatibilité de type de la méthode OpenRecordset. Je suis en utilisant le code comme indiqué ci-dessus, pas de DAO ou ADODB qualificatifs.
- Si vous êtes dans une fenêtre de code, l'ouverture de Outils/Références dans la barre de menu vous arrive à la Ajouter des Références boîte de dialogue.
- Ah, merci
Vous devez vous connecter pour publier un commentaire.
Exemples ici, pour toutes les permutations de l'ouverture d'un "jeu d'enregistrements":
http://www.vbexplorer.com/VBExplorer/vb_feature/june2000/Database_Beginner_ADO_DAO.asp
Le plus simple est d'utiliser DAO sur la base de données actuelle. Mon VBA est un peu rouillé, mais...
Pour ADO:
Si vous déclarez juste un
Recordset
sans préciser si c'est DAO ou ADO, l'Accès à décider de son propre savoir s'il sera DAO ou ADO, selon l'ordre de vos références:Ouvrir une fenêtre de code, allez dans Outils --> Références, et de regarder la liste.
Il ressemblera à quelque chose comme:
Que voyez-vous dans cet exemple, il existe une référence à DAO ("Microsoft DAO 3.6 Object Library") et ADO ("Microsoft ActiveX Data Objects 2.5 Bibliothèque").
Si vous déclarez votre jeu d'enregistrements sans en préciser le type, l'Accès prend le premier de ces références (=celui qui est le plus en haut de la liste) et crée un jeu d'enregistrements de ce type.
Donc, dans cet exemple, il sera un
DAO.Recordset
.Maintenant, revenons à votre question:
Vous déclarez votre jeu d'enregistrements sans en préciser le type.
Donc, si la première référence dans votre base de données Access est ADO, l'Accès à créer un
ADODB.Recordset
.Ensuite vous l'ouvrez avec un DAO méthode, qui s'attend à un
DAO.Recordset
, et c'est pourquoi vous obtenez le message d'erreur.Il y a deux façons de résoudre votre problème:
DAO.Recordset
ouADODB.Recordset
pour s'assurer que c'est vraiment le type que votre code s'attend.Décider si vous souhaitez utiliser ADO ou DAO? Voici un DAO (plus native Access/Jet) exemple
Pas sûr de ce que vous voulez faire avec ce jeu d'enregistrements.
À la fois l'ADO et DAO objet les modèles incluent les objets Recordset. Vous ne pouvez pas échange.
Puisque vous n'avez pas de préciser que vous avez voulu, le vôtre pourrait être un jeu d'enregistrements ADO ... qui pourrait rendre compte de l'erreur d'incompatibilité de type de la méthode OpenRecordset.
Cette méthode renvoie une DAO jeu d'enregistrements, donc tout d'abord déclarer rsSytem en tant que tel.
"Table" est un mot réservé en SQL. Si vous devez le nom de votre table "table", puis placez-le entre crochets:
"SELECT * FROM [Table]"
.