Поделиться через


Объект Recordset (ADO)

Область применения: Access 2013, Office 2013

Представляет весь набор записей из базовой таблицы или результатов выполнения команды. В любой момент объект Recordset ссылается только на одну запись в наборе в качестве текущей записи.

Замечания

Объекты Recordset используются для управления данными от поставщика. При использовании ADO вы почти полностью управляете данными с помощью объектов Recordset . Все объекты Recordset состоят из записей (строк) и полей (столбцов). В зависимости от функциональных возможностей, поддерживаемых поставщиком, некоторые методы или свойства Recordset могут быть недоступны.

ADODB. Recordset — это идентификатор ProgID, который следует использовать для создания объекта Recordset . Существующие приложения, ссылающиеся на устаревшую версию ADOR. Набор записей ProgID будет продолжать работать без повторной компиляции, но новая разработка должна ссылаться на ADODB. Набора записей.

В ADO определены четыре различных типа курсоров:

  • Динамический курсор — позволяет просматривать добавления, изменения и удаления другими пользователями; разрешает все типы перемещения по набору записей , которые не зависят от закладок; и разрешает закладки, если поставщик их поддерживает.

  • Курсор набора ключей работает как динамический курсор, за исключением того, что он не позволяет просматривать записи, добавляемые другими пользователями, и запрещает доступ к записям, которые другие пользователи удаляют. Изменения данных, внесенные другими пользователями, по-прежнему будут видны. Он всегда поддерживает закладки и, следовательно, разрешает все типы перемещения по набору записей.

  • Статический курсор — предоставляет статическую копию набора записей для поиска данных или создания отчетов; всегда разрешает закладки и, следовательно, все типы перемещения по набору записей. Добавления, изменения или удаления другими пользователями не будут видны. Это единственный тип курсора, разрешенный при открытии объекта Recordset на стороне клиента.

  • Курсор только вперед — позволяет прокручивать набор записей только вперед. Добавления, изменения или удаления другими пользователями не будут видны. Это повышает производительность в ситуациях, когда необходимо выполнить только один проход через набор записей.

Задайте свойство CursorType перед открытием Recordset , чтобы выбрать тип курсора, или передайте аргумент CursorType с помощью метода Open . Некоторые поставщики поддерживают не все типы курсоров. Ознакомьтесь с документацией по поставщику. Если тип курсора не указан, ADO по умолчанию открывает курсор только вперед.

Если для свойства CursorLocation задано значение adUseClient для открытия набора записей, свойство UnderlyingValue в объектах Field недоступно в возвращаемом объекте Recordset . При использовании с некоторыми поставщиками (например, поставщиком Microsoft ODBC для OLE DB в сочетании с Microsoft SQL Server) можно создавать объекты Recordset независимо от ранее определенного объекта Connection, передав строка подключения с методом Open. ADO по-прежнему создает объект Connection , но не назначает этот объект переменной объекта. Однако при открытии нескольких объектов Recordset через одно и то же подключение следует явно создать и открыть объект Connection . при этом объект Connection назначается переменной объекта . Если эта переменная объекта не используется при открытии объектов Recordset, ADO создает новый объект Connection для каждого нового набора записей, даже если вы передаете один и тот же строка подключения.

При необходимости можно создать столько объектов Recordset .

При открытии набора записей текущая запись размещается в первой записи (если она есть), а свойства BOF и EOF имеют значение False. Если записей нет, параметры свойств BOF и EOF имеют значение True.

Можно использовать методы MoveFirst, MoveLast, MoveNext и MovePrevious . Метод Move ; и свойства AbsolutePosition, AbsolutePage и Filter для изменения положения текущей записи при условии, что поставщик поддерживает соответствующие функциональные возможности. Объекты Recordset , доступные только для прямого доступа, поддерживают только метод MoveNext . При использовании методов Move для посещения каждой записи (или перечисления набора записей) можно использовать свойства BOF и EOF , чтобы определить, перешли ли вы за начало или конец набора записей.

Объекты Recordset могут поддерживать два типа обновления: немедленное и пакетное. При немедленном обновлении все изменения данных сразу же записываются в базовый источник данных после вызова метода Update . Вы также можете передать массивы значений в качестве параметров с помощью методов AddNew и Update и одновременно обновить несколько полей в записи.

Если поставщик поддерживает пакетное обновление, поставщик может кэшировать изменения в нескольких записях, а затем передавать их в одном вызове в базу данных с помощью метода UpdateBatch . Это относится к изменениям, внесенным с помощью методов AddNew, Update и Delete . После вызова метода UpdateBatch можно использовать свойство Status, чтобы проверка для любых конфликтов данных, чтобы устранить их.

Примечание.

Чтобы выполнить запрос без использования объекта Command , передайте строку запроса в метод Open объекта Recordset . Однако объект Command необходим, если требуется сохранить текст команды и повторно выполнить его или использовать параметры запроса.

Свойство Mode управляет разрешениями доступа.

Коллекция Fields является членом объекта Recordset по умолчанию. В результате следующие два оператора кода эквивалентны.

    Debug.Print objRs.Fields.Item(0)  ' Both statements print 
    Debug.Print objRs(0)              '  the Value of Item(0).