web-dev-qa-db-fra.com

MS Access - exécuter une requête enregistrée par nom dans VBA

Comment exécuter une requête enregistrée dans MS Access 2007 dans VBA?

Je ne veux pas copier et coller le SQL dans VBA. J'exécute plutôt simplement le nom de la requête.

Cela ne fonctionne pas ... VBA ne trouve pas la requête.

CurrentDb.Execute queryname
25
tdjfdjdj

Vous pouvez le faire de la manière suivante:

DoCmd.OpenQuery "yourQueryName", acViewNormal, acEdit

OR

CurrentDb.OpenRecordset("yourQueryName")
38
Taryn

Vous devez rechercher pourquoi VBA ne peut pas trouver nom de requête .

J'ai une requête enregistrée nommée qryAddLoginfoRow . Il insère une ligne avec l'heure actuelle dans ma loginfo table. Cette requête s'exécute correctement lorsqu'elle est appelée par son nom par CurrentDb.Execute.

CurrentDb.Execute "qryAddLoginfoRow"

Je suppose que soit 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 actuelle, ou queryname est le nom littéral d'une requête existante mais vous ne l'avez pas mise entre guillemets.

Edit: Vous devez trouver un moyen d'accepter que nom_interrogation n'existe pas dans la collection QueryDefs de la base de données actuelle. 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 d'exécution 3265, " Élément introuvable dans cette collection. " Ensuite, accédez à la fenêtre Exécution pour vérifier la nom de la requête que vous demandez CurrentDb à Execute.

10
HansUp

Pour utiliser CurrentDb.Execute, votre requête doit être une requête d'action, ET entre guillemets.

CurrentDb.Execute "queryname"
5
tahwos