MS Access - выполнить сохраненный запрос по имени в VBA - PullRequest
23 голосов
/ 29 марта 2012

Как выполнить сохраненный запрос в MS Access 2007 в VBA?

Я не хочу копировать и вставлять SQL в VBA. Я скорее просто выполню имя запроса.

Это не работает ... VBA не может найти запрос.

CurrentDb.Execute queryname

Ответы [ 3 ]

36 голосов
/ 29 марта 2012

Вы можете сделать это следующим образом:

DoCmd.OpenQuery "yourQueryName", acViewNormal, acEdit

ИЛИ

CurrentDb.OpenRecordset("yourQueryName")
10 голосов
/ 29 марта 2012

Вы должны выяснить, почему VBA не может найти имя_периода .

У меня есть сохраненный запрос с именем qryAddLoginfoRow .Он вставляет строку с текущим временем в мою таблицу loginfo .Этот запрос успешно выполняется при вызове по имени CurrentDb.Execute.

CurrentDb.Execute "qryAddLoginfoRow"

Я предполагаю, что либо queryname - это переменная, содержащая имя запроса, которого нет вКоллекция QueryDefs текущей базы данных, или queryname - это буквальное имя существующего запроса, но вы не заключили его в кавычки.

Редактировать : вам нужно найти способ принять, что имя_периода не существует в коллекции QueryDefs текущего БД.Добавьте эти 2 строки в код VBA непосредственно перед строкой CurrentDb.Execute.

Debug.Print "queryname = '" & queryname & "'"
Debug.Print CurrentDb.QueryDefs(queryname).Name

Вторая из этих двух строк вызовет ошибку времени выполнения 3265, " Элемент не найден в этой коллекции. "Затем перейдите в окно" Немедленно ", чтобы проверить имя запроса, который вы задаете от CurrentDb до Execute.

5 голосов
/ 26 ноября 2016

Чтобы использовать CurrentDb.Execute, ваш запрос должен быть запросом действия, И в кавычках.

CurrentDb.Execute "queryname"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...