Подтвердить что ты не робот

MS Access - выполнить сохраненный запрос по имени в VBA

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

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

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

CurrentDb.Execute queryname
4b9b3361

Ответ 1

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

DoCmd.OpenQuery "yourQueryName", acViewNormal, acEdit

ИЛИ

CurrentDb.OpenRecordset("yourQueryName")

Ответ 2

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

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

CurrentDb.Execute "qryAddLoginfoRow"

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

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

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

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

Ответ 3

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

CurrentDb.Execute "queryname"