Программирование в ACCESS 2000, страница 13

Применение объекта Recordset

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

1.   Таблица. Этот тип объекта Recordset может быть создан только на основе локальной таблицы Access. Он содержит все записи этой таблицы. Открытие данного объекта в программе VBA аналогично открытию таблицы в режиме Таблица. Поскольку все записи таблицы загружаются в оперативную память, преимуществом такого типа объекта Recordset является возможность быстрого поиска нужной записи. Вы можете свободно изменять значения полей в записях этого объекта, а также добавлять и удалять записи.

2.   Статический набор записей. Данный тип объекта представляет собой набор записей, который создается на основе таблицы, в том числе и присоединенной, запроса или инструкции SQL Однако этот набор записей является неизменяемым, вы сможете обеспечить только просмотр данных. Он представляет собой «мгновенный снимок» данных, полученный в момент создания такого объекта. Все записи этого объекта также загружаются в оперативную память, и если данные в исходных таблицах меняются, эти изменения не отражаются в объекте Recordset. Обычно статический тип объекта Recordset, как и табличный тип, используется для работы с небольшим числом записей, когда нужно только просматривать данные.

3.   Статический набор записей с последовательным доступом. Данный тип объекта аналогичен статическому набору записей во всем, кроме того, что он позволяет просматривать записи набора только вперед, то есть один раз.

4.  Динамический набор записей. Как и набор записей статического типа, этот тип объекта может быть создан на основе таблицы, запроса или инструкции SQL, однако он является изменяемым и обновляемым — записи исходных таблиц (иногда не все поля) можно редактировать, добавлять и удалять. Кроме того, он отображает изменения значений в полях в исходных таблицах (но не отображает добавление и удаление записей), сделанные другими пользователями. Это наиболее широко используемый тип объекта Recordset.

5. Динамический. Этот тип объекта очень похож на динамический набор записей. Отличие заключается в том, что он отображает все изменения, сделанные другим пользователем после того, как этот объект был создан, в том числе добавленные и удаленные записи. Объект Recordset данного типа используется только в рабочей области ODBCDirect.

Чтобы создать объект Recordset, используется метод Open Recordset. Причем этот метод имеет несколько объектов: Database, TableDef, QueryDef, Connection (в рабочей области ODBCDirect), другой объект Recordset. Синтаксис метода следующий: для объектов Database и Connection:

Set <переменная> = <o6beKi>.OpenRecordset (<источник>, [<типОбъекта>], [<параметры>], [<типБлокировки>]), для объектов TableDef, QueryDef, Recordset:

Set <переменная> = <o6beKT>.OpenRecordset ([<типОбъекта>], [<параметры>], [<типБлокировки>]).

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

Аргумент <типОбъекта> определяет тип объекта Recordset, который будет создан. Всего существует 5 констант, соответствующих всем перечисленным типам объекта:

·  dbOpenTable — таблица; о dbOpenSnapshot — статический набор записей;

·  dbOpenForwardOnly — статический набор записей с последовательным доступом;

·  dbOpenDynaset — динамический набор записей;

·  dbOpenDynamic — динамический.