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


Объект Recordset (ADO)

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

Комментарии

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

ADODB. Recordset — это идентификатор ProgID, который следует использовать для создания объекта Recordset . Существующие приложения, ссылающиеся на устаревший ADOR. Recordset 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 , необходимо вызвать метод Supports для объекта , чтобы убедиться, что эта функция поддерживается или доступна. Не следует использовать функциональные возможности, когда метод Supports возвращает значение false. Например, метод MovePrevious можно использовать только в том случае, если Recordset.Supports(adMovePrevious) возвращает значение True. В противном случае вы получите сообщение об ошибке, так как объект Recordset мог быть закрыт, а функциональные возможности недоступны в экземпляре . Если интересующая вас функция не поддерживается, поддержка также возвращает значение false. В этом случае следует избегать вызова соответствующего свойства или метода для объекта Recordset .

Объекты 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).  

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

Объект Recordset безопасен для создания скриптов.

Этот раздел содержит следующий раздел.

См. также:

Объект Connection (ADO)
Коллекция Fields (ADO)
Коллекция Properties (ADO)
Приложение А. Поставщики