Если вы не указали тип создаваемого объекта Recordset, в рабочей области Jet по умолчанию создается либо объект табличного типа (если источником является локальная таблица), либо динамический набор записей (если источником является запрос или связанная таблица). В рабочей области ODBCDirect по умолчанию создается статический набор записей с последовательным доступом. Аргумент <параметры> задается константой, которая ограничивает изменения данных в создаваемом наборе записей. Например, константа dbAppendOnly означает, что разрешено только добавление записей в объект Recordset, и применяется только к динамическому набору записей. А константа dbDenyRead запрещает другим пользователям не только изменять и добавлять записи, но и читать данные из таблицы. Эта константа применима только к объекту типа Таблица. Подробнее о возможных значениях аргумента см. справку Microsoft Access. Последний аргумент — это тоже константа, определяющая тип блокировки записей создаваемого объекта. По умолчанию в рабочей области Jet применяется тип блокировки dbPessimistic, а в рабочей области ODBCDirect — dbReadOnly. стинге 5.25 приводятся примеры создания наборов записей на основе ра:< объектов.
Листинг 5.25. Создание наборов записей (DАО)
Dim db As Database, rs As Recordset, td As TableDef
Dim qd As QueryDef
Set db = CurrentDB
cоздание объекта Recordset типа Таблица на основе таблицы в текущей базе данных
Set rs = db.QpenRecordset("Сотрудники", dbAppendOnly)
cоздание объекта Recordset типа Статический набор записей
Set td = db.TableDef5("Сотрудники")
Set rs = td.OpenRecordset(dbOpenSnapshot)
cоздание набора записей на основе запроса
Set qd = db.QueryDefs("ИсторияНазначений")
Set rs = qd.OpenRecordset(,dbOptimistic)
В первом случае мы создали объект Recordset типа Таблица на базе объекта >ase, указав в качестве источника локальную таблицу Сотрудники.
Во втором случае мы создали объект Recordset на базе локальной таблицы, ука-лециально тип объекта Статический набор записей. Статический набор за и не является стандартным ни для одного из источников, поэтому, если тре-:я создать этот тип объекта Recordset, нужно явно использовать константу enSnapshot
В третьем случае мы создали объект Recordset на базе запроса в базе данных. При создается динамический набор записей с пессимистической блокировкой, чение параметра dbOptimistic изменяет тип блокировки на оптимистический. сех вышеприведенных примерах объекты Recordset создавались на основе ктов, которые сохранены в базе данных Access. Существует возможность 1ть набор записей на основе временного запроса, например так:
Dim rst As Recordset
Dim strSQL As String
выбираем данные о двух таблицах Авторы и Издания
strSQL = "SELECT Авторы.КодАвтора, Издания.Название," _
& "Издания.ГодИздания FROMИздания INNERJOIN Авторы "_
& "ON Издания.КодИздания = Авторы.КодИздания "_
& "ORDER BY Издания.Название"
cоздаем объект Recordset, выполняя инструкцию SQL
Set rst = CurrentDb.OpenRecordset (stSQL)
Недостатком использования инструкции SQL в качестве источника является необходимость компилирования этой инструкции при каждом выполнении процедуры, а это сказывается на скорости работы. Поэтому там, где возможно, рекомендуется использовать запросы, сохраненные в базе данных, так как они компилируются один раз перед сохранением.
Объект Recordset существует и в модели ADO и имеет то же назначение, что и в модели DAO. Он может быть создан тремя различными способами: помощью метода Execute объекта Connection с помощью метода Execute объекта Command с помощью метода Open объекта Recordset.
Первые два способа возвращают статический набор записей, поэтому могут использоваться только тогда, когда этот набор записей нужен для просмотра данных. В листингах 5.26 и 5.27 приводятся примеры создания объекта Recordset с помощью метода Execute объекта Connection.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.