Самоучитель VBA


Объект Recordset



Объект Recordset

После открытия базы данных можно создать объект Recordset. Объект Recordset представляет собой записи исходной таблицы базы данных или результирующий набор записей, возвращаемые в результате запроса. Он позволяет управлять данными в базе данных на уровне записи. На уровне полей управление данными осуществляется объектом Field.

Имеются следующие типы объекта Recordset;

Тип

Описание

forward-only dynamic

Статический режим с последовательным доступом. Перемещаться от записи к записи можно только вперед. Этот режим самый скоростной

Позволяет получать, анализировать, удалять и редактировать данные из нескольких динамически связанных таблиц. Этот тип соответствует динамическому указателю ODBC

table

dynaset snapshot

Работает с одной таблицей текущей базы данных. В этом случае данные можно индексировать, что ускоряет поиск записей и их сортировку. При поиске записей допустимо использовать вместо метода Find метод Seek

Позволяет получать, анализировать, удалять и редактировать данные из нескольких динамически связанных таблиц. Этот тип соответствует указателю ключевого набора записей ODBC

В этом режиме в общем случае нельзя редактировать базу данных, но скорость работы больше, чем в двух предыдущих

Создание объекта Recordset

Объектная переменная типа Recordset создается при помощи метода openRecordSet. Как и для любой объектной переменной, ее надо сначала объявить, а только потом установить ссылку на объект, возвращаемый методом OpenRecordSet.

Синтаксис для объектов Connection и Database:

Set НаборЗапйсей = объект.OpenRecordset (Источник, Тип, Параметры, Блокировки)

Синтаксис для объектов QueryDef, Recordset и TableDef: Set НаборЗапйсей = Объект.OpenRecordset (Тип, Параметры, Блокировки) Аргументы:

Набор Записей

Объектная переменная, представляющая открываемый объект Recordset

Объект

Объектная переменная, представляющая существующий объект, используемый при создании нового объекта

Recordset

Источник

Выражение (или переменная типа string) , определяющее источник записей для нового объекта Recordset. В качестве источника записей можно указать имя таблицы или запроса, а также инструкцию SQL, которая возвращает записи. Для табличного объекта Recordset в базе данных Microsoft Jet в качестве источника допускается указание только имени таблицы

Тип

Константа, указывающая тип открываемого объекта

Recordset. Допустимые Значения: dbOpenTable,

dbOpenDynaset, dbOpenSnapshot, DbOpenForwardOnly и DbOpenDynamic

Блокировки

Устанавливает тип блокировки данных. Допустимые значения: dbReadOnly, dbPessimistic, dbOptimistic и dbOptimisticValue

Параметры

Специфицирует работу пользователя с объектом Recordset. Приведем некоторые из допустимых значений:

dbAppendOnly (пользователь может добавлять записи, но не может редактировать уже существующие), dbReadOnly (запрещено вносить изменения в записи), dbDenyWrite (запрещено другим пользователям вносить изменения)

Методы и свойства объекта Recordset

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

Методы объекта Recordset.

AddNew

Создает и добавляет новую запись. После внесения изменений в новую запись следует вызвать метод update для сохранения изменений и добавления записи в объект Recordset. До вызова метода update изменения в базу данных не заносятся

Clone

Создает копию объекта Recordset.

Синтаксис:

Set Копия = Оригинал . Clone

Close

Закрывает открытый объект доступа к данным

Delete

Удаляет текущую запись в обновляемом объекте

Recordset

Edit

Копирует текущую запись из обновляемого объекта Recordset в буфер копирования для последующего изменения. После внесения изменений в новую запись следует вызвать метод update для сохранения изменений и добавления записи в объект Recordset

MoveFirst,

MoveLast, MoveNext

и

MovePrevious

Делает текущей первую, последнюю, следующую или предыдущую запись объекта Recordset соответственно

FindFirst, FindLast,

FindNext и FindPrevious

Находит первую, последнюю, следующую или предыдущую запись соответственно, удовлетворяющую заданным условиям, и делает эту запись текущей записью Синтаксис:

(FindFirst | FindLast | FindNext | FindPrevious )Criteria criteria

— это выражение (или переменная типа string), используемая для поиска записи Приведем несколько примеров критериев:

"[Оценка] > 3" "[Фамилия] = 'Петров'" "[Оценка] =5 AND [Предмет] = 'Информатика'" " [ДатаЭкзамена] = #17/06/991


Seek

Находит в индексированном объекте Recordset типа table запись, удовлетворяющую заданным условиям для текущего индекса, и делает эту записи текущей.

Синтаксис:

Seek comparison, keyl, key2 . . . key13

Аргументы: comparison — допустимые значения: "<", "<=", "=", ">=" или ">". keyl, key2, ..., key13 — одно или несколько значений ключевых полей в текущем индексе объекта Recordset

GetRows

Загружает строки объекта Recordset в массив.

Синтаксис:

Set ИмяМассива = НаборЗаписей . GetRows (NumRows)

  • NumRows — число строк

Update

Сохраняет вставки и изменения, произведенные в объекте Recordset При помощи методов AddNew и Edit

CancelUpdate

Отменяет все изменения объекта Recordset, выполненные При помощи методов AddNew и Edit

Свойства объекта Recordset.

BOF EOF

Возвращает значение True, если указатель текущей записи расположен перед первой записью набора записей, и значение False, если указатель текущей записи расположен на первой записи набора или на любой записи после нее Возвращает значение True, если указатель текущей записи расположен после последней записи набора, и значение False, если указатель текущей записи расположен на последней записи набора или на любой записи перед ней

Bookmark

Устанавливает или возвращает закладку, которая однозначно определяет текущую запись в объекте Recordset. Обычно используется для возврата в объект Recordset на определенное место, без указания конкретного адреса записи

NoMatch

Возвращаемые значения: True, если нужная запись не найдена, и False в противном случае

RecordCount

Возвращает число записей, к которым был осуществлен доступ в объекте Recordset. Свойство RecordCount не показывает, сколько записей содержится в объекте Recordset до обращения ко всем записям. После обращения к последней записи набора значение свойства RecordCount становится равным полному числу не удаленных записей в объекте Recordset. Для принудительного обращения к последней записи следует вызвать для объекта Recordset метод MoveLast

Filter

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

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

[Оценка] = 5 [Оценка] >= 3 [Оценка] =5 AND [Предмет] = "Информатика" [Оценка] = 4 AND [Предмет] = "Информатика" [Оценка] >= 4 AND [Предмет] IN ("Информатика", "Право") [Длина] * [Ширина] > 100

В критериях вместо знака равенства допустимо использование ключевого слова LIKE, например:

[Оценка] LIKE 5

Sort

Задает или возвращает порядок сортировки записей в объекте Recordset (только в рабочей области Microsoft Jet). Для сортировки по возрастанию используется ключевое слово ASC, а по убыванию — DESC.

Например,

[Оценка] ASC [Фамилия] DESC

Для сортировки первоначально по полю оценка, а потом по полю Фамилия: [Оценка] ASC, [Фамилия] DESC









Начало  Назад  Вперед