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