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

Листинг 5.26. Создание набора записей на основе временного запроса (ADO — вариант 1)

Dim  rst As ADODB.Recordset

Dim cnn As  ADODB.Connection

Dim  stSQL As  String

'выбираем данные о прежнем месте  работы сотрудника

'устанавливаем соединение с  текущей базой данных

Set  cnn = CurrentProject.Connection

'присваиваем значение  переменной  stSQL

stSQL = "SELECT Авторы.КодАвтора,  Издания.Название, "  _

&  "Издания.ГодИздания'FROM Издания   INNERJOIN Авторы "_             & "ONИздания.КодИздания = Авторы.КодИздания"_

          &  "ORDERBY Издания.Название"

'создаем объект  Recordset Set  

rst  = cnn.Execute(stSQL)

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

Листинг 5.27. Создание набора записей на основе временного запроса (ADO— вариант 2)

Dim cmd As ADODB.Command

Dim  rst As  ADODB.Recordset,

Dim  stSQL As  String

'создаем объект Command  и определяем его свойства

Set  cmd  = New ADODB.Command

'присваиваем  значение  переменной  stSQL   (см.   листинг   5.26)

With cmd

.ActiveConnection = CurrentProject.Connection

.CommandText = stSQL

.CommandType = adCmdText End With

'создаем объект Recordset

Set rst = cmd.Execute

НОВОЕ В качестве аргумента CommandText метода Execute может использоваться относитель-ный URL. При этом значением свойства ActiveConnection должен быть абсолютный URL, а значение аргумента Option должно быть равно константе adCmdTableDirect. Обычно URL используется при создании объекта Recordset из файла.

Но наиболее широкие возможности для работы с записями предоставляет объект Recordset, создаваемый с помощью метода Open. Он имеет большое количество свойств и методов, позволяющих перемещаться по записям набора, изменять поля записей, добавлять, удалять и фильтровать записи, а также выполнять поиск нужной записи. В отличие от объектов Recordset объектной модели DAO, которые всегда являются временными объектами и существуют только до тех пор, пока они не закрываются в программе, объекты Recordset модели ADO могут быть сохранены в базе данных.

Синтаксис метода Open следующий:

<recordset>.0pen [<Source>], [<ActiveConnection>], [<CursorType>], [<LockType>],

[<0ptions>].

Всe аргументы метода Open являются необязательными, так как всем им соответствуют свойства объекта Recordset, которые могут быть установлены перед выполнением метода Open.

Source — это может быть объектная переменная, ссылающаяся на объект Command, имя таблицы или запроса, инструкция SQL, имя хранимой процедуры или имя файла, в котором сохранен объект Recordset.

ActiveConnection — объектная переменная, ссылающаяся на объект Connection либо символьная строка — строка подключения.

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

LockType — определяет используемый тип блокировки. Тип блокировки связан с типом курсора. Если этот параметр опущен, будет использован по умолчанию самый быстрый тип блокировки — только чтение.

Options — позволяет указать, каким образом провайдер должен интерпретировать аргумент Source.

НОВОЕ      В качестве значения аргумента ActiveConnection может использоваться абсолютныйURL. Относительный URL может быть значением параметра Source. Например, чтобы  заполнить Recordset данными из файла myRS.xlm, расположенного на сервере в папке Ас2002, можно написать оператор:

rs.Open "myRS.xlm","URL=http://MyServer/Ac2002/",,,adCmdTableDirect.

В модели ADO существует четыре типа курсора (объекта Recordset). В ADO термин «курсор» используется для описания различного поведения указателя текущей записи в наборе. По сути, это то же самое, что различные типы объектов Recordset в DAO: