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

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

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

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

Добавлен: 21.10.2020

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

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

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

24:
25: Set Connection = Nothing

 Sub

Тексты листингов 6.4 и 6.5 почти идентичны. Наиболее существенные отличия

вы заметите в содержимом цикла Do while

 Loop (см. строки

 В качест-

ве критерия завершения цикла используется условие достижения последней записи

таблицы (служебное слово EOF обозначает конец файла,

 End Of File).

 Прежде чем

приступить к выполнению цикла, помните, что поиск начнется с первой записи
таблицы (см. команду MoveFirst в строке

 Вновь, как и в прошлый раз, символ

 играет роль признака завершения цикла. Но если ранее цикл был бесконечен,

то теперь выход из него гарантируется, помимо условного выражения If (Temp =

 Then Exit Do, еще и обязательным событием достижения последней записи

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

оператор Like позволяет сравнивать символьные значения с заданным образцом
(образец в нашем случае — это содержимое переменной Temp, заполненной пользо-
вателем). (Вызов функции

 и оператор сравнения Temp с

 следовало

бы вынести за пределы цикла Do while .

 Loop, расположенного в строках 20-

31, и построить при этом еще один, самый "внешний" цикл, который предназнача-
ется исключительно для ввода очередной строки поиска и сопоставления ее с лите-

ралом

 —

 Прим.

Поиск такого рода, конечно, нельзя считать эффективным. Я назвал бы его

"слепым". Представьте, что в вашем распоряжении имеется некий фрагмент числа,

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

 Основная цель примера, приведенного в листинге 6.5, -

познакомить вас с конструкциями языка и способами обработки информации из
базы данных.

Резюме

На этом занятии мы вновь обратились к вопросам использования условных выра-

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

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

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

обозначения таблиц, запросов и курсоров. Соединение — объект, позволяющий свя-
зать код приложения с физическим файлом базы данных. Наконец, поле — это еди-
ный фрагмент данных.

В последующих главах мы более подробно рассмотрим различные объекты, обес-

печивающие программный интерфейс к базе данных и ее элементам. А сейчас реко-
мендуем обратиться к разделу "Задания" и выполнить предлагаемые упражнения.

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


background image

Вопросы и ответы

Вопрос. Целесообразно ли изучить объекты ActiveX Data Objects (ADO) прежде, чем

браться за решение любой задачи, связанной с базами данных Access?

Ответ.

 В ваше распоряжение предоставлены и другие альтернативы, но ADO —

новейший и самый эффективный набор инструментальных средств программирова-

ния баз данных.

Вопрос. Какими именно инструментами, помимо ADO, можно воспользоваться?
Ответ.

 Во-первых, вы можете управлять данными в интерактивном режиме непо-

средственно из среды Access. В вашем арсенале имеются также механизмы создания и
исполнения макросов, объекты DoCmd (за подробностями обращайтесь к системе опе-

ративной справки Access), а также несколько устаревшие, но до сих пор поддержи-

ваемые протоколы Direct Access Objects (DAO) и Remote Data Objects (RDO). Microsoft

рекомендует, однако, пользоваться объектами ADO.

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

 Recordset

всякий раз, когда необходимо

 действия с использованием информации из базы

данных?

Ответ.

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

класса RecordSet, вы можете затем использовать его многократно, но перед заверше-
нием программы объект следует обязательно закрыть.

Вопрос. Каким образом, по вашему мнению, следует подходить к вопросу дальнейшего

изучения тем,

 в ходе занятия?

Ответ.

 Мое мнение таково — информацию следует искать и изучать по мере необ-

ходимости. В

 если вы в состоянии самостоятельно сформулировать инте-

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

хом воспользоваться средствами поиска, предоставляемыми оперативной справочной

системой Access. He стесняйтесь также обращаться за помощью к коллегам; кроме

того, в вашем распоряжении новейшая литература, сеть Internet и ее многочисленные

виртуальные конференции — на любой вопрос вы найдете квалифицированный и ис-
черпывающий ответ.

Задания

Ниже приведены тестовые задания и упражнения, которые помогут вам самостоя-

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

вопросы вы найдете в приложении.

Тесты

1. Какие объекты данных, помимо таблиц, могут адресоваться средствами

RecordSet?

2. Как в среде Access создать новый программный модуль?
3. Каким образом можно протестировать код модуля?
4. Для каких целей применяется объект класса Catalog?
5. Каким образом установить указатель записей объекта класса RecordSet на первую

запись?

6. Какую разновидность циклов предпочтительно использовать для обработки заранее

известного количества объектов данных?

6-й час. Управление базами данных


background image

1. Исправьте код процедуры CreateTable, приведенной в листинге 6.2, таким обра-

зом, чтобы добавить в определение таблицы CONTACTS столбцы для хранения адре-
са (ADDRESS), названия города (CITY), области (REGION) и почтового индекса

(ZIP_CODE).

2. Определите SQL-запрос, отображающий данные из всех столбцов таблицы

CONTACTS, упорядоченные по возрастанию почтового индекса (POSTAL_CODE).

3. Применив в качестве примера код листинга 6.5 и воспользовавшись выражением

SQL, построенным при выполнении предыдущего упражнения, напишите проце-

дуру поиска записи по заданному почтовому индексу

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


background image

7-й час

Расширенные

типы данных

В главе "6-й час. Управление базами данных" мы рассматривали приемы исполь-

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

зы данных с помощью прикладных программ. На этом занятии мы сузим тему и обра-

тимся к вопросам применения протокола ActiveX Data Objects (ADO).

На протяжении последних

 лет специалистами Microsoft разработано

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

Windows-приложениями, и возможность повторного использования откомпилирован-

ного кода. Самый ранний из протоколов — это стандарт

 динамического обмена данны-

ми

 (Dynamic Data Exchange —

 DDE).

 Позже была реализована гораздо более продук-

тивная и

 модель

 связывания и внедрения объектов

 (Object Linking and

Embedding —

 OLE).

 В 1996 году Microsoft внесла в нее некоторые изменения и пере-

именовала OLE в

 ActiveX.

Все эти протоколы, в

 помогают программистам повторно использовать

ранее разработанный код. Подобная идея в процессе ее реализации может быть во-

площена в несколько форм. Самая простая и наиболее традиционная из них — мо-

дель

 динамической библиотеки

 (Dynamic Link Library —

 DLL),

 которая и сегодня нахо-

дит самое широкое применение. (Просмотрите массив файлов с расширением

расположенных в каталогах

 или

 на диске

своего компьютера. Я, например, использую поочередно обе операционные системы,

Windows 2000, и в названных папках у меня содержится около 3120 таких файлов.)

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

цепции ActiveX были разработаны специальные протоколы. Хронология их появления

такова: Remote Data Objects

 (RDO),

 Direct Access Objects

 (DAG)

 и, наконец, ActiveX

Data Objects

 (ADO).

 (Еще один протокол, который широко используется до сих пор, —

это Open DataBase Connectivity

 общий термин для обозначения

средств повторного использования кода, a ODBC,

 DAO и ADO — это протоко-

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

Возможно, названные аббревиатуры привели вас в легкое (?) замешательство. Если

сейчас вы отправляетесь в свое первое путешествие в мир программирования, считай-

те, что вам крупно повезло. В первую очередь, вам следует уделить самое пристальное


background image

внимание изучению объектов ADO, отбросив в сторону все остальное. Я же вступил

на профессиональную стезю еще в то время, когда не существовало даже динамиче-
ских библиотек DLL, и мне пришлось продираться сквозь джунгли LIB, DLL, DDE,
OLE, ODBC, RDO и

 чтобы добраться, наконец, до ADO.

В связи с бурным развитием Internet компания Microsoft разрабатывает

.NET-среду, которая включает Common Language Runtime (CLR) и

другие технологии. В настоящее время Microsoft Office не поддерживает
технологию

 На последующие версии Microsoft Office этот факт

повлияет в том плане, что язык программирования Visual

 не

поддерживает VBA, таким образом, беспокоиться об ADO+ вам не

придется. В настоящее время языки программирования VBA для
Microsoft Office и Visual Basic развиваются в разных направлениях.

Доподлинно не известно, зачем нужно было разрабатывать такое количество при-

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

как гримасы некоей диалектической природы творчества), но один факт не вызывает

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

значительно упростились.

Обращаясь к файлам оперативной справки Access и образцам кода, написанного

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

всех

 названных выше протоколов. Но мы с вами, избрав один путь — новейший и са-

мый мощный стандарт ADO, — будем неукоснительно его придерживаться. За исклю-

чением короткого примера сравнения

 с ADO, во всех листингах этой и следую-

щих глав мы будем ссылаться только на средства ADO.

В ходе прошлого занятия некоторые аспекты рассматриваемого кода вы принима-

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

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

свойств и методов ADO, ранее введенных в обращение.

Основные темы занятия.

• Знакомство со средствами OLE Automation и сравнение архитектур

 и ADO.

• ADODB и ADOX — инструменты управления данными.
• Примеры кода на основе ActiveX Data Objects.

Знакомство со средствами OLE
Automation

OLE Automation

 (или, в более современной и короткой трактовке, просто

Automation)

 — это стандарт, который действует в рамках технологии Component Object

Model

 (COM)

 и регламентирует способы совместного доступа к программным объек-

там, облеченным в форму откомпилированного кода. Программы, поддерживающие

стандарт Automation и предоставляющие свои объекты в распоряжение других прило-

жений, называют

 Приложения, которые обращаются к ресурсам OLE-

серверов, носят название

 клиентов.

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

ляемых сервером услуг по своему усмотрению. Вспомните команду Dir, исполняемую

в сеансе MS DOS. Вы указываете для Dir соответствующие параметры, и она выпол-
няет свою задачу — выводит на экран список файлов. OLE-сервер способен предос-

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

только некоторые из них в различных сочетаниях. Access — это пример приложения-

сервера. В других программах (клиентах) можно пользоваться инструментами Access

для решения определенных задач.

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