Je ne comprends pas ce que vous essayez de faire. Pourquoi utilisez-vous un jeu d'enregistrements DAO et un ADO? Cela n'a aucun sens du tout. Si vous avez enregistré des requêtes dans un frontal Access, alors même si votre back-end est, disons, SQL Server avec des liens de table ODBC, il n'y a vraiment aucune utilité à utiliser ADO.
Il n'y a aucune preuve d'une boucle dans votre code, donc à moins que votre code ne soit appelé par une boucle, il ne me semble pas que l'explication de l'article de la BC s'appliquerait. Je ne sais pas ce que vous voulez faire, mais le point sur l'ouverture de votre base de données une fois, plutôt que dans chaque répétition de votre boucle, devrait être assez évident pour quiconque y réfléchit. Si vous exécutez une boucle et que vous ouvrez plusieurs fois la même base de données à chaque répétition de la boucle, il est évident que l'opération appartient à la boucle.
Ce serait quelque chose comme ceci:
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Set db = CurrentDB()
For Each qdf in db.QueryDef
[do whatever here]
Next qdf
Set qdf = Nothing
Set db = Nothing
Dans ce code, vous utilisez le MDB actuellement ouvert dans l'interface utilisateur, mais il n'a pas d'importance - quelle que soit la base de données que vous ouvrez et en boucle à travers ses objets ne devrait être ouvert qu'une seule fois, en dehors de la boucle.
Si vous souhaitez que votre boucle se trouve dans un sous-programme appelé à partir de votre code principal, transmettez la variable de base de données en tant qu'argument à votre sous-routine. Le sous-programme serait quelque chose comme ceci:
Public Sub ProcessQueries(db As DAO.Database)
Dim qdf As DAO.QueryDef
For Each qdf in db.QueryDef
[do whatever here]
Next qdf
Set qdf = Nothing
End Sub
Et vous appelez cela ainsi:
Dim db As DAO.Database
Set db = CurrentDB()
Call ProcessQueries(db)
Set db = Nothing
Maintenant, si vous insistez pour obtenir des données sources de DAO et puis en faisant quelque chose avec lui via ADO, vous Avoir une boucle DAO et à l'intérieur, et boucle ADO. À cause de cela, vous voudriez définir votre connexion ADO en dehors de votre boucle DAO, plutôt qu'à l'intérieur. La seule exception à cela serait que les données que vous extrayez de votre boucle DAO définissent la base de données que vous ouvrez avec ADO. Comme nous ne savons pas ce que vous essayez réellement d'accomplir, il est pratiquement impossible de donner de bons conseils sur ce que vous devriez changer dans votre code.
Publiez le code qui provoque l'erreur. – xsl