MS Access-exécuter une requête sauvegardée par nom dans VBA
Comment puis-je exécuter une requête sauvegardée dans MS Access 2007 dans VBA?
Je ne veux pas copier et coller le SQL dans VBA. Je suis plutôt d'exécuter simplement le nom de la requête.
Cela ne fonctionne pas ... VBA ne trouve pas la requête.
CurrentDb.Execute queryname
3 réponses
Vous pouvez le faire de la façon suivante:
DoCmd.OpenQuery "yourQueryName", acViewNormal, acEdit
OU
CurrentDb.OpenRecordset("yourQueryName")
vous devriez chercher pourquoi VBA ne trouve pas queryname.
j'ai une requête sauvegardée nommée qryAddLoginfoRow. Il insère une rangée avec le temps courant dans mon loginfo tableau. Cette requête fonctionne correctement lorsqu'elle est appelée par son nom par CurrentDb.Execute
.
CurrentDb.Execute "qryAddLoginfoRow"
je pense que queryname est une variable contenant le nom d'une requête qui n'existe pas dans la collection QueryDefs de la base de données courante, ou queryname est le nom d'une requête existante, mais vous n'avez pas le mettre entre guillemets.
Modifier:
Vous devez trouver un moyen d'accepter que queryname n'existe pas dans la collection actuelle de QueryDefs de la db. Ajoutez ces 2 lignes à votre code VBA juste avant le CurrentDb.Execute
ligne.
Debug.Print "queryname = '" & queryname & "'"
Debug.Print CurrentDb.QueryDefs(queryname).Name
la seconde de ces 2 lignes déclenchera l'erreur 3265,"Élément ne figurant pas dans cette collection. " alors allez à la Fenêtre immédiate pour vérifier le nom de la requête que vous demandez CurrentDb
Execute
.
pour utiliser CurrentDb.Exécutez, votre requête doit être une requête d'action, et dans les guillemets.
CurrentDb.Execute "queryname"