Чтение онлайн

на главную - закладки

Жанры

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

Каммингс Стив

Шрифт:

ADO позволяет вам работать с объектами баз данных, обходясь без предварительного создания объекта Connection: вы можете связать эти объекты с подключением только тогда, когда придет время заполнить их реальными данными. Либо же вы можете создать подключение неявно в процессе определения объекта Recordset или Command. Однако создание объекта Connection явным образом упрощает ваш код и позволяет связывать одно подключение с несколькими другими объектами.

Работа с объектами 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

Определение параметров объектов Recordset

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

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

В базах данных курсор означает функциональные возможности, необходимые для перемещения между записями. Тип курсора, который вы выбираете для объекта Recordset, определяет, насколько свободно пользователь сможет работать с записями, а также будут ли автоматически отражаться изменения, внесенные другими пользователями. Используйте свойство Cursor Type или соответствующий аргумент метода Open для указания выбранного вами варианта. Все доступные варианты перечислены в табл. 17.1. По умолчанию тип курсора определен как Forward-only.

Поделиться:
Популярные книги

Черный маг императора 3

Герда Александр
3. Черный маг императора
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора 3

Повелитель механического легиона. Том VIII

Лисицин Евгений
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Повелитель механического легиона. Том VIII

Пипец Котенку! 3

Майерс Александр
3. РОС: Пипец Котенку!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Пипец Котенку! 3

Разбуди меня

Рам Янка
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Разбуди меня

Боги, пиво и дурак. Том 6

Горина Юлия Николаевна
6. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 6

Болотник 2

Панченко Андрей Алексеевич
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 2

Ты всё ещё моя

Тодорова Елена
4. Под запретом
Любовные романы:
современные любовные романы
7.00
рейтинг книги
Ты всё ещё моя

S-T-I-K-S. Пройти через туман

Елисеев Алексей Станиславович
Вселенная S-T-I-K-S
Фантастика:
боевая фантастика
7.00
рейтинг книги
S-T-I-K-S. Пройти через туман

Имя нам Легион. Том 4

Дорничев Дмитрий
4. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 4

Сводный гад

Рам Янка
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Сводный гад

Я князь. Книга XVIII

Дрейк Сириус
18. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я князь. Книга XVIII

Королевская Академия Магии. Неестественный Отбор

Самсонова Наталья
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Королевская Академия Магии. Неестественный Отбор

Последняя Арена 6

Греков Сергей
6. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 6

Жребий некроманта. Надежда рода

Решетов Евгений Валерьевич
1. Жребий некроманта
Фантастика:
фэнтези
попаданцы
6.50
рейтинг книги
Жребий некроманта. Надежда рода