Книга: VBA для чайников

Работа с объектами Recordset

Работа с объектами Recordset

Давайте поближе познакомимся с объектами Recordset: вы используете при выполнении фундаментальных операций с данными. Объект Recordset - это контейнер, содержащий данные, полученные из источника данных. Как и положено контейнеру, один объект Recordset может содержать различные записи в разное время.

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

* собственный метод Open объекта Recordset;

* метод Execute объекта Command;

* метод Execute объекта Connection.

Простейший способ создания объекта Recordset - использование метода Open этого самого объекта. Метод Open хорошо работает в том случае, если вы используете простые инструкции Select для получения необходимых записей. Следующий фрагмент кода демонстрирует настройку объекта Recordset с помощью метола Open:

Dim conman As New Connection

Dim rstMan As Recordset

Dim strSQL As String

...(здесь содержится код, используемый для создания объекта подключения conMan) strSQL = "SELECT * FROM Toys" ' выбор всей таблицы Toys

Set rstMan.ActiveConnection = conman

rstMan.Open strSQL,, adOpenForwardOnly, adLockReadOnly, _

adCmdText

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

Инструкции SELECT языка SQL подходят далеко не всегда. В приложениях клиент/сервер эффективность очень часто диктует необходимость создания объектов Recordset путем выполнения процедур (запросов). Если подобной процедуре требуются определенные параметры, в этой ситуации оказывается удобным использование объекта Command для создания объекта Recordset.

Прежде всего настройте объект Command, присвоив его свойству ActiveConnection значение, соответствующее необходимому подключению. После этого вы можете уделить внимание и объекту Recordset. В этом случае вы должны сначала определить параметры этого объекта как свойства. После этого вы наполняете объект Recordset записями, пользуясь результатами выполнения метода Execute объекта Command. Соответствующий пример приведен ниже:

Dim conTest As New Connection

Dim cmdTest As New Command

Dim rstTest As Recordset

Dim strSQL As String

...(код, создающий объект подключения contest

... и определяющий строку strSQL)

' Создание объекта Command:

With cmdTest

Set .ActiveConnection = contest

.CommandText = strSQL

.CommandType = adcmdText

End With

rstTest.CursorType = adOpenForwardOnly

rstTest.lockType = adLockReadOnly

Set rstTest = cmdTest.Execute()

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

Dim conVert As New Connection

Dim rstVert As Recordset

Dim strSQL As String

...(код, создающий объект подключения conVert

... и определяющий строку strSQL)

rstVert.CursorType = adOpenForwardOnly

rstVert.lockType = adLockReadOnly

Set rstVert - conVert.Execute()

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

Вместо этого вы можете указать строку подключения в качестве второго аргумента метода

Open объекта Recordset, как показано ниже:

Dim rstInPeace As New Recordset

Dim strSQL As String, strConnect As String strSQL = "SELECT * FROM Bicycles" 'Получение всех записей 1 Код, назначающий строку подключения переменной strConnect rstInPeace.Open strSQL, strConnect, adOpenForwardOnly

Оглавление книги


Генерация: 1.239. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз