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
Vous pouvez le faire de la manière suivante:
DoCmd.OpenQuery "yourQueryName", acViewNormal, acEdit
OR
CurrentDb.OpenRecordset("yourQueryName")
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
.
Pour utiliser CurrentDb.Execute, votre requête doit être une requête d'action, ET entre guillemets.
CurrentDb.Execute "queryname"