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

       

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






    Содержание раздела