Письмо от автора
Дорогие читатели!
Вот мы снова вместе. Группа разработчиков Microsoft Access приготовила для нас новый свой хит! В этой новой версии Access, наконец-то, не на словах, а на деле были усовершенствованы многие средства, не изменявшиеся на протяжении трех предыдущих версий приложения.
В дополнение к тому, что разработчикам удалось достичь полной совместимости Access с SQL Server, создать совершенные средства разработки страниц доступа к данным и намного повысить скорость работы Access с помощью XML, были добавлены средства, которые порадуют всех, кто пишет отчеты. В числе новейших средств разработки отчетов следует упомянуть возможность создавать в режиме конструктора отчеты для World Wide Web. Подробности я приберегу для главы, посвященной отчетам.
Одна из целей этого издания книги заключается в том, чтобы показать пути преобразования ранее созданных программ, которые были основаны на модели DAO (Data Access Objects - объекты данных Access), в программы, базирующиеся на более современном стандарте доступа к данным - модели ADO (ActiveX Data Objects - объекты данных ActiveX). Поклонники DAO, не беспокойтесь! Некоторые разделы этой книги, например приложение В, посвящены рассмотрению именно таких объектов.
Когда я покупаю книгу, то, прежде всего, читаю ее содержание. Если я нахожу, по крайней мере, 5 заголовков, которые меня заинтересовали, то считаю, что деньги, потраченные на книгу, не пропадут зря. Что касается этой книги, то я старался, чтобы вы нашли в ней как минимум 50 интересующих вас тем. Вашему вниманию будут представлены техники, позволяющие расширить возможности реализации творческого потенциала и закрепить практические навыки. Кроме того, в этой книге вы найдете блоки кодов, которые можно использовать в ваших приложениях, даже не задумываясь о том, как они работают (хотя, если вы уважаете меня, то разберетесь в принципах их работы).
В общем, я надеюсь, что чтение книги "от корки до корки" принесет вам и пользу, и удовольствие. Если вы повстречаете меня на какой-нибудь конференции не стесняйтесь: остановите и скажите все, что думаете об этом издании.
Искренне ваш
Скотт Ф. Баркер,
автор книги Эффективное программирование в Microsoft Access 2002.
Кому предназначена эта книга
Эта книга написана как для корпоративных разработчиков, так и для независимых консультантов, поскольку и тем, и другим необходимо уметь в кратчайшие сроки разложить по полочкам сложную проблему. Например, вы узнаете о тех процедурах автоматической проверки системы при запуске, с помощью которых можно управлять временем подключения пользователей к системе. Такие процедуры не только проверяют условия доступа к базе данных заднего плана (и при необходимости локализуют ее в системе), но также восстанавливают эту базу данных после отключения всех пользователей. В книге вы найдете подробные описания различных ситуаций и их решений.
Если вы всю свою жизнь были большим поклонником макросов, то пусть вас не смущает название главы 1 "Макросы - для чайников, программы - это круто". Поверьте, с точки зрения программиста на VBA те разработчики, которые упорно привязывают себя к макросам, выглядят переростками, незаслуженно оставленными на второй год, которых нужно подтолкнуть к освоению новых вершин. С VBA вы найдете среду разработки, над которой, в отличие от макросов, будете иметь полный контроль.
Если ранее вы использовали другие языки программирования, то первые главы книги дадут вам всю необходимую информацию, благодаря которой вы почувствуете себя комфортно в среде VBA. Помните о том, что VBA и Visual Basic - это схожие, но не одинаковые языки программирования. О том, чем они отличаются друг от друга, вы узнаете в главе 2.
Если вы опытный разработчик, то по достоинству оцените главы, посвященные вопросу переходов от других сред разработки к другим. Например, когда лучше использовать ADO вместо DAO и ADP вместо MDB. В дополнение к новым материалам, связанным с использованием XML в Access, вашему вниманию также будут представлены примеры кодов выполнения рутинных задач с помощью объектов ADO.
Как построена эта книга
Книга Эффективное программирование в Microsoft Access 2002 состоит из пяти частей, следующих друг за другом в логической последовательности: от основ эффективного программирования до примеров кодов программ, которые вы сможете использовать в своих приложениях с целью придать им высокую производительность и ошибкоустойчивость.
Часть I. Истоки эффективного программирования
Часть I начинается с небольшой главы, в которой показано, как просто перейти от использования макросов к кодам VBA (Visual Basic for Application). Несколько глав посвящено тем, кто перешел к программированию в Access от написания программ на других языках: вы познакомитесь с базовыми принципами программирования на VBA, что поможет разобраться с примерами кодов, которые приводятся в остальных главах книги. Часть I посвящена также двум виртуальным средам разработки приложений в Access 2002, а также методам доступа к данным, используемыми для обработки данных в программных кодах. И наконец, вашему вниманию будут представлены различные средства обработки ошибок.
- В главе 1 объясняется, как сделать переход от макросов к программированию на VBA менее болезненным.
- Глава 2 предоставляет полный набор команд и средств VBA.
- Глава 3 знакомит вас с новейшими средствами настройки среды разработки в Access 2002. Вы узнаете о возможных альтернативных путях разработки приложения и принципах выбора наиболее подходящего решения.
- В главе 4 рассказывается о различных коллекциях объектов, используемых в объектной модели Access, включая ADP и MDB.
- В главе 5 объясняется, что представляет собой модель ADO - приоритетная технология работы с данными в компании Microsoft, позволяющая широко применять в пользовательских проектах объекты других приложений Microsoft.
- В главе 6 речь идет о принципах работы с XML и перспективах использования технологий, основанных на HTML, в Access.
- В главе 7 говорится о принципах отслеживания и обработки ошибок в программах, а также приводится пример централизованной процедуры обработки ошибок с регистрацией системных ошибок в журнале на жестком диске.
Часть II. Работа с данными и их представление
Хотя слова эффективное программирование в названии книги настраивают вас на лад написания различных хитрых кодов в редакторе VBA, в действительности Access сам по себе предлагает достаточно мощный набор средств в своем пользовательском интерфейсе для разработки мощных приложений. Именно о пользовательском интерфейсе Access речь пойдет в главах части II.
В основе всех форм и задач, выполняемых приложением базы данных, лежат запросы. От того, насколько профессионально будут созданы и оптимизированы ваши запросы, всецело зависит производительность и успешность вашего приложения. В этой части говорится о создании форм для многократного использования, будут рассмотрены новые свойства и методы форм. Вы узнаете о способах эффективного использования обычных и раскрывающихся списков, а также о том, как управлять элементами форм из программного кода. Отдельная глава посвящена использованию VBA для создания отчетов. И наконец, вы узнаете о страницах доступа к данным, с помощью которых можно создавать формы и отчеты для Internet.
- В главе 8 рассказывается, как создавать мощные и эффективные запросы для выполнения пользовательских задач и предоставления данных для форм и отчетов. Особое внимание будет уделено средствам оптимизации запросов и принципам выбора этих средств. Будут продемонстрированы примеры сложных многоуровневых запросов для вывода итоговых значений.
- В главе 9 предоставляется информация, как правильно создавать формы, использовать разбиение на страницы, а также некоторые новые средства, добавленные в Access 2002.
- В главе 10 приводятся примеры эффективного использования раскрывающихся и обычных списков, речь идет и о создании форм в виде электронных таблиц. Представлены средства динамического создания элементов управления и форм с помощью VBA.
- Глава 11 посвящена созданию динамических отчетов, основанных на запросах с параметрами, задаваемыми с помощью формы. Создание ежемесячных отчетов с использованием перекрестного запроса в качестве источника записей в главе проиллюстрировано на примере. В конце главы обсуждаются новые свойства запросов, добавленные в Access 2002.
- В главе 12 продемонстрированы преимущества использования нового типа интерактивных запросов - страниц доступа к данным. Речь идет не только о том, как использовать страницы доступа к данным, но также и о возможностях повышения их эффективности за счет добавления элементов управления ActiveX и программного кода.
Часть III. Расширение возможностей Access и взаимодействие с другими приложениями Office
Это моя самая любимая часть книги (а также самая любимая часть Access). В части III описываются процедуры автоматизации различных приложений Microsoft Office с помощью программ на языке VBA. В главах части демонстрируются примеры кодов элементов управления ActiveX, которые вы можете использовать в Access, в том числе коды обычных элементов управления Windows, являющихся частью модели MOD (Microsoft Office Developer - среда разработки Microsoft Office).
В части III рассматриваются примеры создания модулей классов, коллекций и мастеров, с помощью которых можно существенно повысить эффективность программирования. Также приведено множество примеров средств Access, предназначенных для Internet.
- В главе 13 предлагается большое количество примеров программных кодов, используемых для управления из Access другими приложениями Office, такими как Word, Excel, Project, Outlook и Graph, а также наглядно проиллюстрировано, как можно управлять приложением Access из Excel и Project.
- В главе 14 рассматриваются стандартные элементы управления Windows, входящие в Microsoft Office Developer. На примерах показано, как использовать свойства и методы каждого элемента управления.
- В главе 15 демонстрируются принципы использования объектов API Windows для добавления в Access средств, которые отсутствуют в исходном приложении.
- В главе 16 говорится о том, как эффективно использовать наиболее передовые средства VBA для достижения максимальной производительности приложений. В этой главе представлен интересный пример использования модулей классов и коллекций для отслеживания пользовательских закладок в формах.
- Глава 17 является логическим продолжением главы 16. В ней речь идет о принципах создания мастеров для использования при разработке приложений. Рассматриваются некоторые встроенные построители новых средств разработки, представленных в предыдущей главе. Создание нового элемента управления для формы потребует от вас всего нескольких нажатий клавиш.
- В главе 18 объясняется, как можно применить в пользовательских приложениях средства доступа к системному реестру для сохранения в нем значений глобальных переменных, используемых для настройки пользовательской среды приложения.
- В главе 19 рассматриваются встроенные средства Access, используемые для разработки Web-страниц. Речь пойдет и о новом типе данных - гиперссылке, способах импортирования таблиц из Web-страниц и экспортировании из Access в формат HTML, а также методах публикации форм и отчетов в Internet и т. д.
Часть IV. Управление базами данных
Каким бы совершенным ни было приложение, для использования его в локальной сети всегда необходимо выполнить определенные дополнительные шаги, связанные с его настройкой и перепрограммированием. Access в этом плане ничем не отличается от других программ. Хотя сначала кажется, что все проблемы решаются простым размещением Access на сервере, в действительности вам потребуется разобраться со средствами оптимизации работы приложения в сети и разрешения различных конфликтных ситуаций.
Особое внимание будет уделено созданию реплик баз данных, включая не только рассмотрение средств выполнения и оптимизации этих процедур, но и рассмотрение теоретических вопросов, лежащих в основе репликации.
Приложение SQL Server стало настолько популярным в наши дни, что оно даже добавлено в установочный компакт-диск Access. Поэтому разработка современных приложений в Access не может обойтись без знаний о SQL Server. Одна из глав части IV полностью посвящена вопросам налаживания взаимодействия приложения Access с SQL Server. Другая - рассматривает возможность использования Access с рабочей станции, где выполнялась разработка проекта.
- Глава 20 вводит вас в курс модели обеспечения безопасности Access с использованием средств пользовательского интерфейса и программного кода. В этой главе вы также найдете достаточно много советов, приемов и примеров программного кода по разрешению часто возникающих проблем, связанных с обеспечением безопасности работы с базами данных Access.
- В главе 21 говорится об особенностях работы с Access в многопользовательской среде, в том числе о специальных средствах блокирования доступа и обработки ошибок. Будут продемонстрированы образцы кодов для работы с несвязанными формами, которые в определенных ситуациях являются весьма распространенным средством повышения производительности систем. Также рассматриваются средства блокировки доступа на уровне отдельных строк.
- Глава 22 расскажет о том, как добиться максимальной эффективности использования реплик баз данных. Будет рассмотрен весь спектр вопросов: от способов распространения реплик баз данных до методов разрешения возникающих конфликтных ситуаций и устранения сбоев.
- В главе 23 речь пойдет об особенностях использования Access в сочетании с SQL Server. Главная цель этой главы состоит в том, чтобы убедить вас, что не нужно выбрасывать в мусорный ящик приложение, над которым вы трудились долгие месяцы, после небрежно брошенной фразы шефом: "А не перейти ли нам на SQL Server?!". В главе подробно рассказывается о шагах по приведению вашего приложения от обычной базы данных к модели клиент-сервер.
- В главе 24 говорится о том, как использовать средства ADP (Access Data Project - Проект базы данных Access) для разработки проекта под SQL Server.
Часть V. Добавление последних штрихов
Главы части V можно было бы озаглавить как "Идеи Скотта Баркера по поводу того, что еще следует добавить в любое разрабатываемое вами приложение". Примите эти сведения как полезные советы, а не как необходимость.
- В главе 25 представлены процедуры проверки системы во время запуска приложения. Эти процедуры выполняют проверку не только целостности и места нахождения базы данных заднего плана (в ядре Jet или на SQL Server), но также проверку версии приложения, даже при одновременном запуске приложения переднего края. В главе приводится пример кода, обслуживающего отключение пользователя от удаленной базы данных.
- Глава 26 в продолжение темы предыдущей главы представляет вашему вниманию процедуры, выполняющие экспортирование таблиц в любой допустимый формат, отделение и восстановление переднего края от заднего (опять-таки, сначала отключите всех пользователей из базы данных), репликацию полустатических таблиц для повышения эффективности и многое другое.
Приложения
В приложении к этой книге вы найдете полезные советы по отладке программ (Приложение А), дополнительные сведения об использовании элементов управления ActiveX (Приложение Б) и модели DAO (Приложение В), а также информацию о том, как управлять с помощью программных кодов такими компонентами Office, как командная строка и Помощник по Office (Приложение Г).
Об авторе
Скотт Ф. Баркер (Scott. F. Barker), бакалавр компьютерных наук, посвятил более 15 лет разработке баз данных. Первые базы данных он создавал с помощью Clipper. Однако последние 8 лет основными инструментами работы для Скотта стали Microsoft Access, Visual Basic и SQL Server.
В течение 2-х лет Скотт работал в компании Microsoft в группе, занимающейся разработкой Access и FoxPro. Он до сих пор продолжает сотрудничать с этим творческим коллективом, но уже как руководитель независимой компании Application Plus, которая занимается разработкой программных продуктов под заказ для банков, медицинских организаций, страховых компаний и пр.
Скотта приглашают консультантом и в Application Developers Training Company (Компания подготовки разработчиков приложений), и во многие другие организации, занимающиеся подготовкой специалистов по программированию и компьютерной технике. Скотт также регулярно принимает участие в регулярно проводимых в США, Канаде, Европе конференциях, посвященных вопросам разработки баз данных Access. Тысячи разработчиков приложений из разных стран могут назвать Скотта Баркера своим учителем.
Скотт - автор статей в Smart Access (Pinnacle), Data Based Advisor Magazine (Advisor), Access, VB, SQL Advisor (Advisor), Microsoft Office & VBA Developer (Informant Communications) и German VBA Magazine. Кроме того, он написал книги Using Access 97 (Que), а также несколько изданий Access Power Programming (Sams и Que) для версий Access 95, 97 и 2000. А книги, редактором которых был Скотт Баркер, перечислить просто невозможно.
Благодарности
Прежде всего, я благодарен Богу за то, что дарит мне идеи и счастье заниматься любимым делом.
Я хочу поблагодарить Пэй Чанга (Pai Chung) и Пит Клейн (Pete Klein) за техническое редактирование этой версии книги. Только благодаря их помощи мне удалось разработать простые и понятные коды для баз данных, используемых в качестве примеров в этой книге.
Я также хочу поблагодарить всех моих друзей среди разработчиков Microsoft Access и Office. Не сосчитать, сколько раз я обращался к ним за помощью. Моя особая благодарность Давиду Гейнеру (David Gainer) и Клинту Ковингтону (Clint Covington) за помощь в освоении XML, а также страниц доступа к данным. Это счастье - работать с людьми, столь увлеченными своим делом.
Я хочу поблагодарить всех моих друзей-разработчиков баз данных в Access: Паула Литвина (Paul Litwin), Кена Гетза (Ken Getz), Стива Форте (Steve Forte), Рогера Дженнингс (Roger Jennings), Джона Вьескуса (John Viescus), Майка Гроха (Mike Groh), Майка Гернандеза (Mike Hernandez), Мэри Чипмен (Mary Chipman) и Энди Барона (Andy Baron). Мы большие друзья, несмотря на то, что встречаемся только изредка на конференциях, посвященных Access.
Огромное спасибо Элисон Болтер не только за то, что работать с ней - одно удовольствие, равно как и наблюдать, с какой быстротой она управляется с Access и SQL Server, но и вообще за то, что она мировой человек. Элисон! Будь всегда таким же энтузиастом! Я также хочу поблагодарить ее мужа Дэна (Dan), который мужественно переносил длительные дискуссии, когда на нас вдруг за полночь находило озарение, и мы бросались к телефону, чтобы тут же обсудить новые идеи.
И наконец, я должен поблагодарить мою семью за участие и неравнодушие к моей работе. Спасибо вам, Диана (Diana), Крис (Chris), Кэри Энн (Kari Anne), Николь (Nichole) и Давид (David). Я люблю вас!