Как выполнить сохраненный запрос в MS Access 2007 в VBA?
Я не хочу копировать и вставлять SQL в VBA. Я скорее просто выполнил имя запроса.
Это не работает... VBA не может найти запрос.
CurrentDb.Execute queryname
Вы можете сделать это следующим образом:
DoCmd.OpenQuery "yourQueryName", acViewNormal, acEdit
ИЛИ
CurrentDb.OpenRecordset("yourQueryName")
Вам следует выяснить, почему 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
.
Чтобы использовать CurrentDb.Execute, ваш запрос должен быть запросом действия, а в кавычках.
CurrentDb.Execute "queryname"