Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.10.2020

Просмотров: 7951

Скачиваний: 25

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Закрытие

Завершив работу с объектом соединения, не забывайте закрыть его. Листинг 7.4

содержит короткий пример применения команд объявления, открытия и закрытия

объекта Connection.

Листинг 7.4. Пример использования объекта

Sub

 )

Const Provider =
Const DataSourth =

Data

 Yourself Microsoft Access 2002

"Programming in 24

Dim Connection As New

 Provider +

 End Sub

Знак & и символ подчеркивания в строках 4 и 5 листинга 7.4 исполь-

зуются для конкатенации строки, расположенной в нескольких физи-

ческих строках кода.

В строках 2-5 задается информации о соединении и источнике данных. В

I строке 7 содержится объявление объекта. В строках 8 и 9 выполняется от-

крытие и закрытие соединения. Чтобы процедура выполняла что-то дейст-

вительно результативное, вставьте необходимый код между строками 8 и 9.

Recordset

После объявления объекта Connection и успешного открытия соединения будет

естественным обратиться к объекту Recordset, который задает некий набор данных и
позволяет приступить к решению конкретной задачи. Объект класса Recordset спо-

собен содержать данные из таблицы, запроса, курсора или хранимой процедуры. От-

крытый объект Recordset может единовременно ссылаться на одну запись (строку)

набора данных. Объекты класса Recordset — одни из самых популярных и часто ис-

пользуемых средств управления данными.

Поверьте, целью разнесения по различным классам функций соеди-

нения с базой данных и управления ею является отнюдь не стремление

ввести вас, программиста, в заблуждение и смятение. Основной довод,

которому следовали разработчики Microsoft, — это разумное

распределение ответственности. Задача управления базой данных в

общей постановке весьма трудна. Наличие отдельных классов (таких

как Connection или Recordset), решающих частные задачи, значи-

тельно упрощает технологию программирования. Но если собрать все

данные и методы их обработки в единое целое, такой объект наверняка

выйдет за пределы восприятия и потребует чрезмерных системных

ресурсов. Возможность разбиения целого на части — одно из фунда-

ментальных преимуществ объектно-ориентированного стиля програм-

мирования.

130

Часть II. Основы конструирования программ


background image

Наборы данных (объекты Recordset) следует открывать, а затем закрывать. Они

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

данных (см. листинги

 7.2 и 7.3).

Открытие

Прежде чем воспользоваться средствами объекта Recordset для доступа к данным, его

надлежит

 Чтобы

 объект, следует объявить переменную

 типа ADODB. Recordset, а затем записать конструкцию вида

 ОбъектСоединения,

 ДополнительныеОпции

 это ранее объявленная переменная типа

(см. строку 5 листинга 7.2). В качестве ИмяОбъектаДанных следует задать имя таблицы
(см. строку 6 листинга 7.2) либо символьной переменной, содержащей код SQL. Вместо
ОбъектСоединения можно подставить имя объекта

 Connection, если

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

Можно также использовать имя другого правильно определенного объекта типа Con-

nection (обратитесь к разделу "Connection", приведенному выше).

Параметры ТипКурсора и ТипБлокировки принимают значения перечислимых

типов

 и

 описание которых вы сможете найти в фай-

лах оперативной справки Access. В строке 3 листинга 7.2 в качестве параметров Тип-

Курсора и ТипБлокировки указаны значения adOpenKeyset и
соответственно.

Закрытие

После завершения работы с набором данных (объектом класса

 его

необходимо обязательно

 Возьмите за правило выполнять подобную операцию

всегда. Строка

 листинга 7.2 служит примером инструкции закрытия набора данных.

Редактирование записи

Команды добавления записи и редактирования ее содержимого весьма просты.

Строка 8 листинга 7.2 демонстрирует действия по добавлению записи. При необходи-
мости сохранения внесенных изменений, связанных с добавлением или редактирова-
нием записи, используйте команду Update.

Предположим, что объект набора данных носит название RS. Тогда инструкция

добавления записи будет выглядеть как RS.AddNew, редактирования —

 а со-

хранения внесенных изменений —

 Update. Примеры добавления, редактирования

и сохранения записей приведены в строках

 листинга 7.2.

 достижения начала и конца набора данных

Объект класса

 содержит два метода определения факта дости-

жения начальной и конечной записей набора данных — соответственно, BOF (от

Beginning Of File — начало

 и EOF (от

 End Of File — конец файла).

Новый термин

Метод —

 это термин, который указывает на процедуру или функцию, со-

держащуюся в составе класса и объектов на его основе. В наборе методов
объекта заключены его функциональные возможности.

Предположим, что объект набора данных носит название RS. Тогда инструкция

проверки условия достижения начала набора данных будет выглядеть как

 а

его конца — как

 EOF.

 час. Расширенные типы данных


background image

Обе функции, BOF и EOF, возвращают результат типа Boolean: BOF = True при

достижении начальной записи набора данных, a EOF = True — последней записи.

Поскольку значения типа Boolean —

 кандидаты на роль критериев

завершения циклов и операндов условных выражений, их удобно использовать в цик-
лических конструкциях, предполагающих прямое или обратное прохождение по запи-
сям набора данных. Строка 21 листинга 6.5, приведенного в главе 6, содержит пример
использования функции EOF.

Перемещение по записям

Класс

 содержит ряд функций, позволяющих перемещаться по запи-

сям открытого набора данных: Move, MoveFirst,

 и

Удачное, красноречивое имя, данное процедуре или функции, обеспечивает ей до-

полнительные преимущества. Это в полной мере относится к функциям группы Move.
MoveFirst смещает указатель текущей записи к началу набора данных, a MoveLast — к
концу; MoveNext позволяет переместиться к следующей записи, a MovePrevious — к
предыдущей. Наконец, Move обеспечивает возможность перемещения на произвольное
число записей по направлению к концу или началу набора относительно текущей.

Листинг 6.5 главы 6 содержит пример использования методов MoveFirst, MoveN-

ext и EOF для решения частной задачи прохождения по всем записям набора данных.
Важно помнить, что все эти

 "собственность" класса

Поэтому при необходимости их использования обращение всегда следует предварять

1) наименованием объекта типа

 который должен быть ранее объ-

явлен и открыт; 2) символом точки:

Указанная синтаксическая формула справедлива в отношении любых объектов, к

свойствам и методам которых необходимо обратиться. Слева от точки располагается

имя переменной-объекта, а справа — название свойства (элемента данных), функции

или процедуры, принадлежащих объекту данного класса.

Использование полей

Набор данных (объект класса

 способен единовременно ссы-

латься только на одну (текущую) запись. Запись может состоять из одного или не-
скольких полей. В упоминавшейся ранее таблице LIBRARY, например, содержались

столбцы

 TITLE, AUTHOR, ISBN, PAGECOUNT, PUBLISHER И

 Объект

на пересечении записи (строки) и столбца называют

 полем.

Мы уже неявно пользовались объектами полей — просмотрите строки 10-15 лис-

тинга 7.2. Так, например, запись RS

 означает ссылку на поле столбца

"TITLE" и текущей строки.

Более подробные сведения о свойствах и методах класса Field вы сможете найти в

файлах оперативной справочной системы Microsoft Visual Basic, если введете строку по-
иска

 Field Object (ADO).

 Наиболее важный атрибут объекта Field — свойство Value.

 термин

Атрибут —

 это обобщенный термин, используемый для обозначения лю-

бого свойства или метода объекта класса.

Доступ к свойству Value осуществляется по общей схеме:

та

 Свойство Value — это переменная типа Variant. Другими слова-

ми, Value способно хранить и возвращать любые данные, и компилятор успешно оп-
ределит их тип. В строках 10-15 листинга 7.2, например, переменным Value присваи-
ваются значения символьных строк, чисел и дат.

132 Часть II. Основы конструирования программ


background image

К сожалению, мы не сможем рассмотреть здесь все атрибуты класса Field — их

достаточно много. Примите к сведению, что некоторые из них будут упоминаться в

ходе дальнейшего повествования. Кроме того; в вашем постоянном распоряжении

оперативная справочная система с массой прекрасных примеров и подробнейших

разъяснений — берите и пользуйтесь!

Использование объектов ADOX

Библиотека

 ADO Data Definition and Security Library

 (ADOX) содержит определения

классов, позволяющих управлять таблицами, курсорами и индексами, а также адми-

нистрировать данные о пользователях и группах пользователей.

Чтобы получить доступ к библиотеке ADOX, откройте окно редактора Microsoft

Visual Basic и выберите в строке меню команду

 Пролистайте список

Available References диалогового окна References и установите флажок для элемента

Microsoft ADO Ext. 2.7 for DDL and Security, а затем щелкните на кнопке ОК. Теперь вы

сможете создавать и использовать объекты ADOX.

Catalog

Каталог

 (Catalog) — это контейнерный класс для хранения данных о таблицах,

курсорах, хранимых процедурах, пользователях и группах. В тексте листинга 6.2, рас-

смотренного на прошлом занятии, мы использовали объекты Catalog, Table и Key

для динамического создания таблицы CONTACTS и сохранения ее в одноименной базе
данных.

Между объектами Catalog и Connection существует связь типа

Если необходимо создать с помощью программного кода таблицу и добавить ее в базу

данных, определить новые или исправить существующие ключи и индексы, ввести

или отредактировать атрибуты пользователей или групп — все эти операции вы смо-

жете сделать с помощью объекта Catalog.

Приведенный ниже листинг 7.5 демонстрирует пример кода, предназначенного для

отображения списка всех таблиц базы данных, и содержит строки, частично заимство-

ванные из листингов, которые были рассмотрены на предыдущем занятии.

Листинг 7.5. Пример использования объекта

Sub

 )

Dim Catalog As New
Set

 =

Dim I As Integer
For I = 0 To

 -

 1

 ( I

Next

 I

Set Catalog = Nothing

End Sub

Строка 2 содержит объявление объекта Catalog типа

 а в

I строке З его атрибуту ActiveConnection присваивается значение Cur-

rent

 необходимое для привязки объекта к теку-

щей базе данных. В строке 4 находится инструкция объявления перемен-

ной I типа Integer, которая далее будет использоваться в качестве счет-
чика итераций цикла. Строки 5-7 определяют цикл вида For . . . Next

7-й час. Расширенные типы данных

133


background image

по числу таблиц, содержащихся в базе данных. На каждом шаге цикла
выполняется процедура вывода на экран наименования очередной табли-
цы. Команда строки 8 осуществляет очистку памяти.

Основная нагрузка, которую несет подпрограмма ListTables, заключена в стро-

ке 6. Ее скрытые функции можно перечислить следующим образом:

Dim Name As String
Dim Table As Table
Table =

 ( I )

Name =

 Name

Операнд

 ( I ) возвращает

 объект типа Table коллекции Ta-

bles. Атрибут Name хранит наименование таблицы, адресуемой объектом Table. Ин-
струкция

 Print Name отображает наименование таблицы в окне Immediate.

Новый термин

Коллекция —

 это индексированный набор объектов определенного типа.

Предопределенным коллекциям обычно даются названия в виде сущест-
вительного — имени типа — во множественном числе.

Процедура листинга 7.5 отличается универсальностью и может использоваться с

любыми базами данных Access. Примените ее по отношению к какой-либо базе дан-
ных, и вы получите результат, схожий с тем, который показан на рис.

1

Din

 -

 I

 I - 0 Tc

 - 1

 I

End

 у

 я

 может выглядеть перечень таблиц, хранящихся в базе данных

134

Часть  Основы конструирования программ