Я затрудняюсь объяснить это:
Я получаю сообщение об ошибке:
Error "91" (Object or With block not set)
во второй строке ниже:
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM employees")
Следующее также вызывает это:
`Set rs = CurrentDb.OpenRecordset("employees")`
Выполнение только ?CurrentDb.Name в непосредственном окне также вызывает ошибку.
Теперь очевидно, что база данных открыта, так как я редактирую форму внутри нее, так что может вызвать здесь эту ошибку?
Патрик на правильном пути. Можете ли вы предоставить всю строку кода. Я думаю, это, вероятно, связано с ошибкой OpenRecordset. Вы также можете протестировать в командном окне, чтобы подтвердить, что, по вашему мнению, происходит на самом деле?
Находится ли этот код в модуле, в форме или другом? Вы работаете с проектом ADP или с простой базой данных ванильного доступа?





вам следует назначить свой метод .openRecordset объекту dao.recordset или универсальному объекту (техника «позднего связывания»). попробуйте что-то вроде этого:
dim rs as dao.recordset
set rs = currentDb.openRecordset(your SELECT instruction,...)
Если вы работаете с проектом ADP, вам следует использовать CurrentProject вместо CurrentDB.
Вам нужно будет не только использовать CurrentProject с ADP, но и использовать весь модуль ADODB для взаимодействия с базой данных. Отправная точка: support.microsoft.com/kb/281998.
Попробуйте создать объект базы данных и использовать его вместо ссылки CurrentDb. Например:
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM Employees")
Причина, по которой я подозреваю, что код не будет работать, заключается в том, что согласно M / Soft текст ссылки «CurrentDb» - это метод, который будет возвращать «объектную переменную типа База данных». Так что код, показанный Forester93, должен работать. Это то, что я бы использовал и использую уже много лет.
Что между скобками для OpenRecordset?