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
22
demandé sur SteveC 2012-03-29 19:54:35

3 réponses

Vous pouvez le faire de la façon suivante:

DoCmd.OpenQuery "yourQueryName", acViewNormal, acEdit

OU

CurrentDb.OpenRecordset("yourQueryName")
35
répondu Taryn 2012-03-29 15:55:52

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 CurrentDbExecute.

9
répondu HansUp 2012-03-29 17:32:56

pour utiliser CurrentDb.Exécutez, votre requête doit être une requête d'action, et dans les guillemets.

CurrentDb.Execute "queryname"
4
répondu tahwos 2016-11-26 18:32:31