Je travaille sur un accès à db et je dois utiliser une connexion de données à un serveur SQL.
Pour faire pour cela, j'utilise l'objet Adodb avec: p>
-Adodb.Connection P>
-adodb.recordsetset p>
Code à jour, à la suite d'une observation de Ian Kenney fort> em> p> (Ce code (une partie du code) est un moyen de faire une autocomplietion dans l'accès à une zone de texte et une liste de liste) p> et j'ai une erreur 91 lorsque j'exécute ce code : "Erreur 91: variable d'objet ou avec une variable de bloc non définie". P> Je ne comprends pas comment résoudre ce problème. P> Merci d'avance. P> p>
3 Réponses :
Vous avez fermé le jeu d'enregistrements et la connexion avant de l'utiliser
et la connexion est fermée Ici strong> p> rs utilisé ici strong> p> Utilisation de la méthode de fermeture pour fermer un objet de connexion ferme également tout
Objets d'enregistrement actifs associés à la connexion. Une commande
objet associé à l'objet de connexion que vous ferme vous fermez
persistez, mais cela ne sera plus associé à un objet de connexion;
C'est-à-dire que sa propriété ActiveConnection ne sera définie sur rien. Aussi,
La collection Paramètres de l'objet de commande sera effacée de tout
Paramètres définis par le fournisseur. P>
Utilisation de la méthode de fermeture pour fermer un jeu d'enregistrements, d'enregistrement ou de flux
libère les données associées et tout accès exclusif que vous ayez peut-être eu
aux données via cet objet particulier. Vous pouvez ensuite appeler le
Ouvrir la méthode pour rouvrir l'objet avec le même ou modifié,
les attributs. Bien qu'un objet d'enregistrement soit fermé, appelez toutes les méthodes
qui nécessite un curseur en direct génère une erreur. P>
blockQuote>
Cette question ( Les instructions préparées par MS Access ) indique comment utiliser une requête paramétrée - pourrait valoir un look. p> p>
Ce n'est pas la raison de l'erreur, quand je déplace le rs.close et cnn.close sous me.liste_choix.recordset = Rs, j'ai déjà eu l'erreur.
Avez-vous essayé de déplacer le RS.close / cnn.close à après avoir utilisé le jeu d'enregistrement?
Oui ... me.liste_choix.rowsourcetype = "table / liste" me.liste_choix.recordset = Rs Rs.Close cnn.close
L'élément Adodb.Connection est différent de l'objet Dao.Database ... et je dois utiliser cet élément Adodb en raison de la connexion de DataSource à un serveur SQL.
Bien en supposant que vous avez vérifié la connexion ouverte OK et que le jeu d'enregistrement a quelques données dans, que me.textbox_recherche.text et me.liste_choix sont des contrôles valides, alors je ne pense pas que je puisse vous aider beaucoup plus, car je n'ai pas accès à main.
Ce Video vous promène à travers des moyens de déboguer le code d'accès - pourrait vous aider
Vous nous avez dit que le code jette une erreur 91, "" objet variable ou avec une variable de bloc non définie " em>. Malheureusement, vous n'avez pas indiqué quelle ligne déclenche l'erreur. Cela nous oblige à deviner où le problème réside. Un problème est ici: p> qui tente une attribution d'un objet à un autre. Le signe Bien que vous devriez faire ce changement, je ne suis pas certain que c'était la cause de Erreur 91; J'aurais deviné l'accès se plaindre "Utilisation non valide de la propriété" em> à la place. P> Le comme un conseil général, si votre module de code n'inclut pas déjà = code> est suffisant pour les affectations avec des types de données simples ... IE
myvariable = 2 code>. Cependant, vous devez inclure le mot-clé
définir code> avec des assignations d'objet. P>
Sélectionnez l'instruction CODE> est un autre problème, mais je suis encore incertain si cela contribue à l'erreur que vous avez signalée. Le
où code> clause utilise un
comme code> de comparaison avec un motif qui a
* code> comme caractère de carte sauvage. Cette requête pourrait retourner ce que vous attendez quand vous l'exécutez de Dao. Mais vous utilisez ADO qui traite
* code> comme un seul caractère d'astérisque sans aucune signification particulière. Donc, cette requête ne renvoie probablement aucune lignée lorsque vous l'exécutez d'ADO. Remplacer
* code> avec
% code>. P>
option explicite code> dans ses déclarations section, ajoutez-le. Ensuite, exécutez le débogage-> Compilez du menu principal de l'éditeur VB. Réparer tout ce que le compilateur se plaint de. Assurez-vous d'avoir fait ces choses avant tout dépannage supplémentaire. p> p>
Merci, je vous donne la prime mais je pense qu'un problème important est la façon de déclarer l'objet Adodb.Connection. Nous devons déclarer cet objet avec .properties (je ne sais pas exactement pourquoi ...) comme dans ma réponse ...
J'ai résolu mon problème (Erreur 91), il y avait trois problèmes: la création de l'adodb.Connection, le * dans le SELECT (merci à hanansup) et le jeu pour la listeBOX.Recordset (grâce à Hansup à nouveau) < p> J'ai résolu l'erreur: p>