Автоматизация выполнения задач средствами языка Visual Basic
Макросы — это конечно замечательная вещь, но они могут только то, что могут. Если нет заранее подготовленной макрокоманды, которая делает то, что вам нужно, применить макрос не удастся. Таких ограничений лишен мир программ на языке Visual Basic (VB), в котором можно выполнять практически все, что угодно (если провести достаточное количество ночных часов за клавиатурой компьютера).
Далее приведены примеры задач, которые можно выполнять с помощью программ, но не с помощью макросов:
§изменить группу записей одновременно;
§выполнить интеллектуальную обработку ошибок так, чтобы программа Access не выводила на экран малопонятные сообщения;
■ выполнить сложные вычисления, например, можно вычислить код подтверждения заказа с помощью секретного алгоритма или преобразовать строку текста в Pig Latin ("поросячью латынь");
■ написать более сложные процедуры верификации, блокирующие некорректные данные.
В этой (и следующей) главе не ставится задача сделать из вас профессиональных программистов. Если вы мечтаете об этом, придется продолжить обучение и прочесть специальные книги о программировании в Access. Данная глава стремится научить вас основам программирования в Access. Другими словами, вы узнаете достаточно особенностей программирования на VB, чтобы использовать популярные практические приемы программирования, обсуждаемые в следующей главе. Вы также заложите мощный фундамент для дальнейшего изучения.
Примечание
Версия языка Visual Basic, применяемая в программе Access и других приложениях пакета Office, называется VBA (Visual Basic for Applications, Visual Basic для приложений).
Редактор Visual Basic
Несмотря на то, что программный код на Visual Basic хранится в вашей БД, вы должны применять специальное средство для его -просмотра и редактирования. Оно называется редактором Visual Basic.
Редактор Visual Basic работает во взаимодействии с программой Access, но открывается в отдельном окне. Для перехода в редактор Visual Basic выберите на ленте Работа с базами данных → Макрос → Visual Basic(Database Tools → Macros → Visual Basic). Программа Access запустит отображенное на рис. 16.1 самостоятельное окно, снабженное старомодными меню и панелью инструментов.
Примечание
Закрыть редактор Visual Basic можно в любой момент. Если этого не сделать, программа Access сама закроет его во время завершения работы программы.
Рис. 16.1.В первый момент работы в редакторе Visual Basic все его разделы пусты. В окне Projectнет программных модулей и не отображается никакой программный код (пока)
Редактор Visual Basic разделен на три основные области. Вверху слева окно Project(проект) отображает все модули вашей БД. (Каждый модуль — это контейнер для одной или нескольких программных процедур.) Сначала окно Project(проект) почти пусто, поскольку еще не создано никакого кода. На рис. 16.1 в окне Project(проект) всего один элемент (названный BoutiqueFudge в соответствии с именем текущей БД). Но в этом проекте нет программных модулей.
Примечание
Если в программе Access недавно решались определенные задачи, в окне Project(проект) может выводиться проект со странным именем acwzrtool. Это надстройка программы Access, которая предназначается для мастеров, применяемых в программе. Не пытайтесь просмотреть код в этом проекте, Access не разрешит вам сделать это.
Сразу под окном Projectнаходится окно Properties(свойства), отображающее параметры выделенного в данный момент в окне Projectэлемента, которые можно изменять. В нижней части окна находится окно Immediate(отладка) — средство быстрого тестирования, позволяющее выполнить код до помещения его в вашу БД. Все остальное свободное пространство используется для отображения файлов с программным кодом, после того, как вы создали их. Эта область первоначально пуста.
В следующих разделах вы узнаете самый простой способ создания фрагмента программного кода.
1. Сначала вы создадите новый модуль, являющийся контейнером, в который помещается код.
2. Затем в этом модуле вы напишите процедуру с простейшим кодом.
3. Наконец, вы выполните ваш код, чтобы посмотреть на него в действии.
Когда с этим будет покончено, вы узнаете, как код можно включить в формы и отчеты, которые уже есть в вашей БД. (Именно здесь начнется самое интересное.)
Добавление нового модуля
Обычно вы будете создавать программные процедуры, которые присоединяются к формам и запускаются, когда возникают определенные события (см. разд. "Присоединение макросов к формам" главы 15). Но в этой главе не будем спешить и создадим самостоятельную процедуру, которая запускается по вашему требованию.
Прежде всего, нужно добавить новый модуль для вашего кода. В меню редактора Visual Basic выберите команды Insert → Module(Вставка → Модуль). На рис. 16.2 показан результат.
Когда добавляется новый модуль, редактор Visual Basic автоматически открывает окно с кодом, отображающее содержимое данного модуля. (Если в вашей БД несколько модулей, можно открыть нужный вам модуль двойным щелчком мышью его имени в окне Project.)Первоначально у новоиспеченного модуля одна строка кода, которая выглядит следующим образом: Option Compare Database
Это инструкция, определяющая, как с помощью языка Visual Basic обработать операции сравнения текстовых фрагментов. Исходно у языка Visual Basic есть собственные правила обработки текста, но приведенный оператор требует вместо них использовать установочные параметры программы Access.
Параметры Access зависят от локализации текущей БД (например, использует ли ваша версия ОС Windows язык Английский (США) (U.S. English) или Японский иероглифический шрифт (Japanese kanji script)). Окончательный результат приведенной строки кода — возможность для англоязычных пользователей применять сравнения без различения строчных и прописных букв. Это означает, что слово "помадка" считается равной слову "пОмАдкА", что аналогично способу обработки текста программой Access при написании вами запросов.
Прежде чем вы начнете писать код, который действительно выполняет какие-то действия, следует в начало вашего кода добавить еще одну инструкцию. Сразу после (или до) строки Option Compare Database вставьте следующую строку:
Option Explicit
Эта инструкция заставляет Visual Basic применять более строгую проверку ошибок, способную выявлять часто встречающиеся ошибки при использовании переменных (см. разд. "Хранение информации в переменных" главы 17).
Рис. 16.2.Когда ваш проект включает хотя бы один модуль, окно Projectотображает группу Modules.Программа Access присваивает новым модулям невыразительные имена, например, Module1, Module2и т. д. Для задания чего-то более осмысленного, выделите модуль в окне Projectи в окне Properties,расположенном сразу под ним, измените свойство Name. DataCleanupCode(код очистки данных) — подходящее имя для модуля
Подсказка
Вы можете потребовать от Visual Basic автоматически добавлять строку Option Explicit во все новые файлы с кодом. Для этого выберите Tools → Options(Сервис → Параметры), установите флажок Require Variable Declarations(требовать объявления переменных) и затем щелкните мышью кнопку ОК. Специалисты Access всегда применяют эту установку.
Как и в случае других объектов БД Access, при закрытии редактора Visual Basic программа Access напоминает о необходимости сохранить вновь созданные модули. Если вы не хотите ждать так долго, выберите последовательность команд File → Save [DatabaseName] (Файл → Сохранить [ИмяБазыДанных], где [DatabaseName] — имя файла вашей БД).
Примечание
После того как модуль сохранен, его можно увидеть в области переходов окна программы Access. Если используется режим отображения Таблицы и связанные представления,ваш
модуль выводится в категории Несвязанные объекты,если применяется режим вывода Тип объекта,модуль появляется в категории Модули.Если модуль в области переходов щелкнуть дважды кнопкой мыши, программа Access откроет его в редакторе Visual Basic.