Автоматизация выполнения задач обработки данных
Изучая текстовый процессор Word и табличный процессор Excel, мы уже знакомились с автоматизацией операций в Microsoft Office. СУБД Microsoft Access для целей автоматизации операций с объектами баз данных использует два типа средств: макросы и модули.
Макросом называют набор из одной или более макрокоманд, выполняющих определенные операции, такие, как открытие форм или печать отчетов. Например, при нажатии пользователем определенной кнопки можно запустить макрос, который распечатает отчет. Макрос может быть как собственно макросом, состоящим из последовательности макрокоманд, так и группой макросов. В некоторых случаях для решения, должна ли в запущенном макросе выполняться определенная макрокоманда, может применяться условное выражение.
Модулем называют набор описаний и процедур на языке Visual Basic для приложений, собранных в одну программную единицу.
В Microsoft Access многие действия выполняются с помощью макросов или через интерфейс пользователя. Во многих других СУБД для решения тех же самых задач требуется программирование. Выбор между созданием макроса или разработкой программы Visual Basic для приложений обычно определяется требуемыми действиями.
В каких случаях целесообразнее использовать макрос?
Макрос является удобным средством выполнения простых задач:
· открытие и закрытие форм;
· вывод на экран и скрытие панелей инструментов или запуск отчетов;
· связывание различных объектов базы данных;
· определение общих назначенных клавиш;
· выполнение макрокоманды или набора макрокоманд при открытии базы данных.
Программы на Visual Basic используют вместо макросов в следующих случаях.
Упрощение управления базой данных. Поскольку макросы являются объектами, существующими отдельно от использующих их форм и отчетов, поддержание базы данных, в которой реакция на события в формах и отчетах определяется многими макросами, становится достаточно затруднительным. В отличие от этого процедуры обработки события Visual Basic являются встроенными в описания соответствующих форм и отчетов. При переносе формы или отчета из одной базы данных в другую встроенные процедуры обработки события автоматически переносятся вместе с формой или отчетом.
1. Создание пользовательских функций. В MS Access определен ряд встроенных функций, например функция IPmt, которая рассчитывает проценты по платежам. Встроенные функции можно использовать для выполнения вычислений без необходимости разрабатывать сложные выражения. Язык Visual Basic позволяет пользователям создавать также собственные функции как для решения задач, выходящих за рамки возможных для встроенных функций, так и для замены сложных выражений, содержащих встроенные функции. Кроме того, создаваемые пользователем функции используются в выражениях для выполнения общих операций над несколькими объектами.
2. Скрытие сообщений об ошибках. Стандартные сообщения об ошибках Microsoft Access, выводимые на экран при возникновении нештатных ситуаций во время работы с базой данных, могут оказаться малопонятными для пользователя, особенно если этот пользователь плохо знаком с MS Access. С помощью Visual Basic можно перехватывать ошибку при ее возникновении и либо выводить собственное сообщение об ошибке, либо предпринимать определенные действия.
3. Создание или обработка объектов. В большинстве случаев удобнее создавать или изменять объекты в режиме конструктора. Однако в некоторых ситуациях приходится работать с описанием объекта в программе. Средства Visual Basic позволяют выполнять обработку всех объектов в базе данных, а также самой базы данных.
4. Выполнение действий на уровне системы. Выполнение в макросе макрокоманды ЗапускПриложения (RunApp) позволяет запускать из собственного приложения другое приложение, работающее в среде Microsoft Windows или MS-DOS, однако этим возможности использования макроса вне Microsoft Access практически исчерпываются. Средства Visual Basic позволяют проверять существование файлов, использовать программирование объектов или динамический обмен данными (DDE) для связи с другими приложениями для Windows, например Microsoft Excel, а также вызывать функции из библиотек динамической компоновки (DLL) Windows.
5. Обработка записей по одной. Инструкции Visual Basic позволяют перебирать наборы записей по одной и выполнять определенные действия над отдельной записью. В отличие от этого макросы позволяют работать только с целым набором записей.
6. Передача аргументов в процедуры Visual Basic. Аргументы для макрокоманд можно задавать в нижней части окна макроса при его создании, но при выполнении макроса изменять их невозможно. Однако при помощи Visual Basic можно передавать аргументы в выполняемую программу или использовать в качестве значений аргументов переменные; макросы не позволяют делать это. Передача аргументов повышает гибкость выполнения процедур Visual Basic.
Использование модулей требует достаточно серьезной программистской подготовки. Сначала мы рассмотрим использование макросов как средств автоматизации в MS Access, используемых пользователями, не владеющими основами программирования на Visual Basic.
Макросы в Microsoft Access 2002 являются достаточно эффективным средством автоматизации, так как в этой версии СУБД представлены новые макрокоманды, с помощью которых можно открывать страницы доступа к данным и новые объекты базы данных, диаграммы, сохраненные процедуры и представления в проекте Microsoft Access (.adp).
Создание макроса
Создайте макрос, который открывает таблицу Учащиеся, выделяет эту таблицу, открывает для нее форму Форма!, применяет к ней фильтр, позволяющий просмотреть записи об учащихся женского пола. Для этого сделайте следующее.
1. В окне базы данных откройте вкладку Макросы в списке Объекты и нажмите кнопку «Создать на панели инструментов окна базы данных».
2. В столбце Макрокоманда щелкните первую ячейку и, нажав кнопку раскрытия списка, открывающую список макрокоманд, как показано на рис.28, выберите команду Открыть таблицу. В области задания аргументов макрокоманды задайте следующие аргументы:
Имя таблицы | Учащиеся |
Режим | Таблица |
Режим данных | Изменение |
Рис. 28. Создание макроса
3. Введите текст комментария к макрокоманде. Комментарии не являются обязательным компонентом, они облегчают понимание и сопровождение макросов.
4. Для добавления в макрос других макрокоманд перейдите на следующую строку и повторите шаги 2 и 3.
Примечание. Чтобы быстро создать макрос, выполняющий действие над конкретным объектом базы данных, перетащите этот объект из окна базы данных в строку макрокоманды окна макроса. Например, можно создать макрос, открывающий форму, путем перетаскивания формы в строку макрокоманды. Для этого выберите в меню Окно команду Слева направо, чтобы расположить окно макроса и окно базы данных на экране рядом, граница к границе; в окне базы данных выберите нужный тип объекта в списке Объекты, щелкните объект и перетащите его в строку макрокоманды. Перетаскивание макроса или сохраненной процедуры добавляет макрокоманду для запуска макроса или процедуры, а перетаскивание объектов базы данных других типов добавляет макрокоманду для открытия объекта.
Использование условий в макросах. В некоторых случаях требуется выполнять макрокоманду или серию макрокоманд только при выполнении некоторых условий. Например, если в макросе проверяется соответствие данных в форме условиям на значение, то для одних значений может потребоваться вывести одно сообщение, а для других значений - другое сообщение. В подобных случаях условия позволяют определить порядок передачи управления между макрокомандами в макросе.
Условие задается логическим выражением. В зависимости от значения логического выражения управление может передаваться разным макрокомандам.
Условное выражение вводится в ячейку столбца Условие в окне макроса. Если условие истинно, выполняется макрокоманда, содержащаяся в данной строке. Для того чтобы выполнить набор макрокоманд при истинности условия, следует ввести, начиная со следующей строки, многоточие (...) в ячейки столбца Условие идущих подряд макрокоманд, принадлежащих к этому набору.
Например, в макрокоманде Применить фильтр в качестве аргумента зададим условие отбора записей таблицы: [Учащиеся]![Пол]<>Истина.
Рис.29. Макрос, выполняющий отбор записей и вывод их в форме
Сохраним макрос, выбрав в меню Файл команду Сохранить как. В окне Сохранение зададим имя макросу Макрос 1 и укажем тип файла макрос.
В результате получим макрос, показанный на рис. 29 и состоящий из четырех макрокоманд.
Запуск макроса. При запуске макроса выполнение макрокоманд начинается с первой строки макроса и продолжается до конца макроса или, если макрос входит в группу макросов, до начала следующего макроса.
Выполнение макроса может начинаться по команде пользователя, при вызове из другого макроса или процедуры обработки события, а также в ответ на событие в форме, отчете или элементе управления. Например, можно связать макрос с кнопкой в форме или отчете, в результате чего макрос будет запускаться при нажатии кнопки. Допускаются также создание специальной команды меню или кнопки панели инструментов, запускающей макрос, определение сочетания клавиш, нажатие которых запускает макрос, а также автоматический запуск макроса при открытии базы данных.
Запустим созданный макрос Макрос1, щелкнув кнопку! (Запуск) в панели инструментов конструктора макросов. Макрос выполнится, и в окне MS Access будет раскрыта форма Форма1 с отфильтрованными записями.
Назначение клавиши для выполнения макрокоманды или набора макрокоманд. Допускается связывание макрокоманды или набора макрокоманд с конкретной клавишей или сочетанием клавиш с помощью специальной группы макросов AutoKeys. Сочетания клавиш, используемые для назначения клавиш в группе макросов AutoKeys, представлены в нижеследующей таблице. После этого при нажатии клавиши или сочетания клавиш Microsoft Access будет выполнять данную макрокоманду.
Примечание. Допустимые сочетания клавиш являются подмножеством синтаксиса инструкции Visual Basic SendKeys. Если макрокоманда или набор макрокоманд связывается с сочетанием клавиш, которое уже используется в MS Access (например Ctrl+C- сочетание клавиш для команды Копировать), то новое назначение макрокоманд на это сочетание клавиш заменит стандартное назначение команд MS Access.
Сочетания клавиш, используемые для назначения клавиш в группе макросов AutoKeys:
Инструкция SendKeys | Сочетание клавиш для назначения макросу |
^А или ^4 | Ctrl+Любая буква или цифра |
{F1} | Любая функциональная клавиша |
^{F1} | Ctrl+Любая функциональная клавиша |
+{F1} | Shift+Любая функциональная клавиша |
{INSERT} | Insert |
^{INSERT} | Ctrl+Insert |
+ {INSERT} | Shift+Insert |
{DELETE} or {DEL} | Delete |
^{DELETE} or ^{DEL} | Ctrl+Delete |
+{DELETE} or+{DEL} | Shift +Delete |
Для задания назначения макросу Макрос1 комбинации клавиш Shift+F3 в окне базы данных выберем значок Макросы в списке Объекты и нажмем кнопку «Создать». На панели инструментов нажмем кнопку «Имена макросов», затем укажем в ячейке столбца Имя макроса сочетание клавиш Shift+F3, с которыми нужно связать макрокоманду или набор макрокоманд, как показано на рис. 30.
Рис.30. Назначение клавиш макросу Макрос1
Добавим в макрос набор макрокоманд Макрос1, который должен выполняться при нажатии указанного сочетания клавиш. Сохраним группу макросов под именем AutoKeys. Сразу после сохранения новые сочетания клавиш вступят в действие и будут доступны при каждом открытии базы данных.
Для проверки действия назначенной комбинации клавиш вызова макроса Макрос! нажмем Shift+F3. Макрос будет вызван, и все его макрокоманды выполнятся.
Выполнение макрокоманд при открытии базы данных. Специальный макрос AutoExec позволяет автоматически выполнить макрокоманду или набор макрокоманд при открытии базы данных. В процессе открытия базы данных Microsoft Access выполняет поиск макроса с этим именем и, если такой макрос существует, автоматически запускает его. Для выполнения макрокоманд при открытии конкретной базы данных создайте макрос, содержащий макрокоманды, и сохраните его под именем AutoExec. При следующем открытии базы данных MS Access автоматически запустит этот макрос.
Примечание. Если требуется открыть базу данных, не выполняя при этом макрос AutoExec, открывайте базу данных при нажатой клавише Shift.
Другие параметры запуска базы данных или приложения можно задать в диалоговом окне Параметры запуска (меню Сервис).