Использование CurrentDb.OpenRecordset в VBA - PullRequest
0 голосов
/ 11 октября 2018

Я что-то редактирую в VBA в MS access.Может кто-нибудь сказать мне, пожалуйста, разницу между двумя ниже утверждениями.

1. Set rs1 = CurrentDb.OpenRecordset("tblOPCEPLTB")
2. Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblOPCEPLTB")

Я предполагаю, что 2-я строка выбирает все строки из таблицы tblOPCEPLTB и сохраняет их в переменной rs.Так что же делает 1-й?После выполнения первого что должно быть?

Пожалуйста, помогите здесь

1 Ответ

0 голосов
/ 11 октября 2018

Первый оператор открывает набор записей типа таблицы, если эта таблица является локальной таблицей доступа (поскольку передаваемый аргумент является таблицей, dbOpenTable является значением по умолчанию)

Второй оператор открывает тип dynasetнабор записей (поскольку переданный аргумент является запросом, dbOpenDynaset является значением по умолчанию)

Основное различие между наборами записей типа dynaset и табличного типа заключается в том, что наборы записей табличного типа поддерживают индексы.

Следующий код выполнится успешно и выполнит поиск записи со значением первичного ключа 5

Set rs = CurrentDb.OpenRecordset("tblOPCEPLTB")
rs.Index = "PrimaryKey"
rs.Seek "=", 5

Следующее не удастся, поскольку поиск поддерживается только для наборов записей табличного типа:

Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblOPCEPLTB")
rs.Index = "PrimaryKey"
rs.Seek "=", 5

Если вы хотите добавить записи только в таблицу, укажите, что при открытии набора записей:

Set rs = CurrentDb.OpenRecordset("tblOPCEPLTB", Options:=dbAppendOnly)

Таким образом, никакие записи не будут заблокированы или загружены, поскольку набор записей будет поддерживать только добавление

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