Основной набор средств Microsoft Access, который мы рассматривали в предыдущих главах книги, ориентирован на пользователей, не владеющих языками программирования. Для программистов же к этим средствам добавлены макросы (небольшие программы на языке макрокоманд системы Access) и модули (процедуры на языке Visual Basic for Application, VBA). С их помощью можно существенно расширить функциональные возможности создаваемого вами приложения и настроить его на нужды конкретных пользователей. В этой главе мы познакомимся с одним из этих средств — макросами и одним из языков программирования Access — языком макрокоманд.
Использование макросов в базе данных Microsoft Access
С помощью макросов можно выполнить практически все действия над объектами Access из тех, которые были описаны в предыдущих главах.
Макрос в Access представляет собой структуру, состоящую из одной или нескольких макрокоманд, которые выполняются либо последовательно, либо в порядке, заданном определенными условиями. Набор макрокоманд в Access очень широк, с помощью макросов можно реализовать многое из того, что позволяют сделать процедуры на языке VBA. Каждая макрокоманда имеет определенное имя и, возможно, один или несколько аргументов, которые задаются пользователем. Например, при использовании макрокоманды ОткрытьФорму (OpenForm) в качестве аргументов необходимо задать, по крайней мере, имя открываемой формы и режим вывода ее на экран.
Макрокоманды Microsoft Access
Категория |
Назначение |
Макрокоманда |
Работа с данными в формах и отчетах |
Отбор данных |
Применить Фильтр (ApplyFilter) |
|
Перемещение по данным |
СледующаяЗапись (FindNext) НайтиЗапись (FindRecord) КЭлементуУправления (GoToControl) НаСтраницу (GoToPage) НаЗапись (GoToRecord) |
|
Обновление данных или экрана |
Обновление (Requery) ПоказатьВсеЗаписи ( ShowAllRecords ) |
Выполнение |
Выполнение команды |
Выполнить Команду (RunComraand) |
|
Выполнение макроса, процедуры или запроса |
ЗапускМакроса (RunMacro) Залуск Программы (RunCode) ОткрытьЗапрос (OpenQuery) 3anycк 3anpoca SQL (RunSQL) |
|
Выполнение другого приложения |
Запуск Приложения (RunApp) |
|
Прерывание выполнения |
Отменить Событие (CancelEvent) Остановить ВсеМакросы (StopAllMacros) ОстановитьМакрос (StopMacro) |
|
Выход из Microsoft Access |
Выход (Quit) |
Импорт/экспорт |
Передача объектов Microsoft Access в другие приложения |
Вывести В Формате (OutputTo) ОтправитьОбъект (SendObject) |
|
Преобразование формата данных |
Преобразовать БазуДанных (Transfer Database) ПереносБазыДанныхSQL (TransferSQLDat abase) Преобразовать ЭлектроннуюТаблицу (Transfer Spreadsheet) ПреобразоватьТекст (TransferText ) |
Работа с объектами |
Копирование, переименование и сохранение объекта |
КопироватьОбъект (CopyObject) Копировать Файл БазыДанных (CopyDatabase File) Переименовать (Rename) Сохранить (Save) |
Прочие |
Вывод на экран или скрытие встроенной или специальной панели инструментов
Подача звукового сигнала |
ПанельИнструментов (ShowToolbar)
Сигнал (Веер) |
Как видно из этой таблицы, действия, которые могут быть выполнены с помощью макросов, очень разнообразны. Даже если вы не будете использовать макросы в своих приложениях, имеет смысл изучить эти макрокоманды, поскольку их можно использовать и в процедурах VBA, как будет показано далее.
По сравнению с предыдущей версией Access, в Microsoft Access 2002 появились три новые макрокоманды:
ПереносБазыДанныхSQL (TransferSQLDatabase) — переносит базу данных Microsoft SQL Server 7.0 и выше на другой сервер;
КопироватьФайлБазыДанных(CopyDatabaseFile) — выполняет копирование текущей базы данных Microsoft SQL Server 7.0 и выше, присоединенной к проекту Access;
ОткрытьФункцию (OpenFunction) — выполняет функцию, определенную пользователем, в проекте Access. Эта функция представляет собой запрос, который, используя входные параметры, возвращает результаты так же, как и сохраненная процедура.
Использование макросов оправдано тем, что их легко создавать, и для этого не нужно изучать синтаксис языка программирования. Для создания макроса требуется знать лишь основные приемы работы в Microsoft Access и Windows, такие как перетаскивание объектов из окна База данных (Database) в специальное окно — Конструктор макросов (Macro Design), выбор действия из списка и ввод выражений в качестве аргументов макрокоманды. Поэтому, если очень не хочется изучать синтаксис языка VBA или это представляется слишком трудным, смело применяйте макросы, и вы получите достаточно функциональное приложение.
Как уже говорилось выше, основное назначение макросов — это создание удобного интерфейса приложения: чтобы формы и отчеты открывались при нажатии кнопок в форме или на панели инструментов или же привычным выбором команды меню; чтобы при открытии приложения пользователь видел на экране не окно База данных (Database), наполненное множеством таблиц, запросов, форм и отчетов, а некую понятную форму, с помощью которой можно было бы сразу производить желаемые действия и т.д.
На рис. 7.1 проиллюстрирован выбор макрокоманды ПрименитьФильтр (Applyfilter). На панели аргументов есть два поля, которые помогут задать имя фильтра и условие отбора записей. Для того чтобы задать условие отбора записей, можно воспользоваться построителем выражений.
Такой макрос можно использовать в форме или отчете для того, чтобы ограничить число отображаемых записей.
Чтобы создать группу макросов:
~ Откройте Конструктор макросов.
~ Нажмите кнопку Имена макросов (Macro Name) на панели инструментов. На панели описаний в окне Конструктора появится еще один столбец - "Имя макроса" (Macro Name) (рис. 7.2).
~ В этот столбец введите имя первого макроса. Другие поля данной строки лучше оставить пустыми - это облегчит перемещение и копирование макрокоманд.
~ Начиная со следующей строки, введите все макрокоманды макроса и соответствующие аргументы для каждой макрокоманды.
~ Пропустите одну строку.
Повторите шаги 3-5 для каждого макроса.
Рис.7.2. Создание группы макросов
На рис. 7.2 в окне Конструктора представлен макрос "Сотрудники" (Employees) базы данных (Northwind). Для указания конца макроса не нужно отдельной макрокоманды. Access продолжает выполнение макроса, который входит в группу, пока не окажется строка, которая содержит имя в столбце "Имя макроса" (Macro Name), или пока не дойдет до последней строки окна макросов.
При обработке макроса пустые строки игнорируются, поэтому их удобно использовать для деления макросов в группе. Этот прием, а также введение комментариев для сложных макросов, которые составляются из большого количества макрокоманд, позволяет улучшить читаемость макросов.
Для запуска одного из макросов группы задается полное имя для ссылки на макрос. Полное имя макроса формируется таким способом: ИмяГруппы.ИмяМакроса.
Способов запуска макросов очень много. Среди них есть прямые способы, когда макрос запускается непосредственно пользователем. Эти способы применяются обычно при тестировании макросов. Когда макрос отлажен, создают специальную команду меню или кнопку на панели инструментов или связывают макрос с каким-нибудь событием в форме или отчете.
Универсальным способом запуска макроса есть использование команды меню Сервис → Макрос → Выполнить макрос (Tools → Macro → Run Macro) (рис. 7.3).
Рис. 7.3. Запуск макроса с помощью команды меню
В диалоговом окне, которое появится при выборе команды Выполнить макрос (Run Macro), нужно указать (ввести или выбрать из списка) полное имя макроса, то есть ИмяГруппы.ИмяМакроса (рис. 7.4). Этот способ позволяет выполнить макрос из любого активного окна, будь то окно макросов, окно базы данных или, например, Конструктор форм.