- •Макросы
- •Техника создания макросов
- •Примечание:
- •Примечание:
- •Редактирование макросов
- •Выполнение макроса с условиями
- •Основные термины языка программирования vba
- •Р ис. 6.1. Окно модуля
- •Раздел описания
- •Создание процедуры
- •Тип данных Хранимые значения Область значений
- •Integer Целое число От -32768 до 32767
- •Условные операторы
- •Операторы цикла
- •Процедура-функция для обработки событий в формах.
- •Примечание:
- •Использование процедуры-функции в отчетах
- •Применение процедур-подпрограмм
- •Выполнение кода vba
- •Примечание:
- •Процедура Вызов
- •Примечание:
Редактирование макросов
Структура таблицы в окне макросов напоминает структуру обычной таблицы базы данных. Все знакомые вам команды редактирования текста, используемые для удаления, переноса и копирования содержимого ячеек, могут применяться и в рамках таблицы макроса
Редактирование макроса осуществляется в режиме конструктора, для установки которого надлежит нажать кнопку Конструктор в окне базы данных. Рекомендуется вносить комментарии в столбец Примечание. Они могут оказаться полезными при изменении макроса автором или другим пользователем, а также позволят получить в любой момент подробную информацию о макрокомандах без их предварительной маркировки. Аргументы
и краткое описание макрокоманды отображаются в окне макросов только при ее маркировке.
Выполнение макроса с условиями
Порядок выполнения макрокоманд, содержащихся в макросе, определяется условиями, задаваемыми в столбце Условие. Условие — это логическое выражение, принимающее значение Истина (True) или Ложь (False). Посредством условия осуществляется управление запуском и выполнением макроса.
Рассмотрим следующий пример. Необходимо создать макрос, который должен выводить на экран сообщение после ввода в форму Информация о клиентах сведений о новом клиенте, проживающем в Киеве.
• Создайте новый макрос и присвойте ему имя Сообщение о клиенте.
• Если столбец Условие не отображается на экране, щелкните на кнопке Условие панели инструментов или активизируйте команду Условия из меню Вид.
• В первую ячейку столбца условий введите логическое выражение
[Населенный пункт]="Киев"
• В той же строке, но в столбце Макрокоманда выберите макрокоманду Сообщение и задайте значение Местный клиент! для аргумента Сообщение. Именно эта фраза отобразится на экране в окне сообщения при выполнении заданного условия. Для аргумента Тип установите значение Информационное. При этом в окне сообщения кроме текста появится пиктограмма с изображением литеры i (это принято в Windows 95 при выдаче сообщений).
• Сохраните созданный макрос.
Рис. 5.1. Макрос Сообщение о клиенте
Имя анализируемого условием поля, содержащее пробел или знак препинания, следует заключать в квадратные скобки: [Населенный пункт].
Итак, макрос, включающий последовательность макрокоманд и условие выполнения, готов. Условие относится к полю Населенный пункт в форме Информация о клиентах. Сообщение должно появляться при внесении в поле Населенный пункт слова Киев. Теперь следует связать этот макрос с заполнением поля Населенный пункт формы Информация о клиентах:
• Откройте форму Информация о клиентах и активизируйте режим конструктора.
• Откройте окно свойств формы, выполнив двойной щелчок за пределами области примечаний.
• Найдите поле После обновления и выберите в списке макрос Сообщение о клиенте. Тем самым вы зададите выполнение макроса с событием, связанным с вводом слова Киев в поле Населенный пункт (рис. 7.10).
• Закройте окно свойств формы и перейдите в режим заполнения.
• В поле Населенный пункт введите слово Киев.
Рис. 5.2. Связывание макроса с событием
Сообщение появится только после завершения работы с записью и перехода к следующей, т.е. после актуализации записи (а не анализируемого поля).
Рис. 5.3. Сообщение, выданное макросом, при выполнении условия
Если при выполнении определенного условия должны приводиться в исполнение несколько макрокоманд, следующих друг за другом, достаточно записать условие в первой строке столбца Условие, а не повторять его в каждой строке. В остальных подлежащих условному выполнению строках надлежит ввести многоточие (...) в столбец условия.
Проиллюстрируем сказанное примером. Предположим, необходимо следить, чтобы число, вводимое в поле Номер договора, не превышало 9999. При вводе в это поле числа, которое больше 9999, на экране должно появляться указание восстановить значение, которое до этого находилось в поле Номер договора.
• Создайте новый макрос с именем Управление вводом.
• В первое поле столбца условий введите условие
[Номер договора] > 9999
• В поле Макрокоманда выберите макрокоманду Сообщение и введите для нее текст сообщения Слишком большой номер договора!
• Во вторую строку столбца условий введите многоточие (...), а столбца Макрокоманда — макрокоманду ВыполнитьКоманду с аргументом Undo (Отменить). Закройте окно макроса.
• Откройте форму Информация о клиентах и активизируйте окно свойств в режиме конструктора.
• В поле После обновления выберите макрос Управление вводом и перейдите в режим заполнения формы.
Теперь можно проверить работу созданного макроса. Выполнение макроса связано с событием После обновления (с обновлением формы). Для проверки следует выбрать одну из заполненных записей и заменить значение в поле Номер договора числом, которое больше 9999. Если после этого попытаться перейти к другой записи, программа выполнит условия, заданные в макросе, и откроет окно сообщения, после закрытия которого в поле Номер договора восстановится прежнее значение. Для полной проверки, замените номер договора числом из диапазона допустимых значений (например, 9900). В результате условия, заданные в макросе, не выполнятся, сообщение не появится, а номер договора будет изменен.
Примечание:
"Озвучить" макрос позволяет команда Сигнал. При выполнении этого макроса компьютер издает короткий звуковой сигнал. Возможности озвучивания есть и у команды Сообщение (аргумент Сигнал), что позволяет сопровождать звуковыми сигналами появление сообщений.
Указание имен объектов
Чтобы сослаться на элемент или свойство объекта базы данных, необходимо знать его точное имя. Имена элементов управления должны быть уникальными в одной форме (отчете) и могут совпадать в разных формах (отчетах) При создании ссылки на элемент управления необходимо учитывать, какой объект базы данных является активным
В рассмотренных примерах макросы Управление вводом и Сообщение о клиенте запускаются непосредственно из открытой формы, поэтому имена полей Населенный пункт и Номер договора, указанные в макросе, однозначно идентифицируют обрабатываемый объект.
Чтобы сослаться на элемент неактивного объекта, нужно указать полное имя этого элемента. Например, если запустить макрокоманду Управление вводом из окна базы данных, не открывая форму, содержащую поле Номер договора, то выполнение макроса будет прервано. Этот макрос можно использовать в другой форме или в другом отчете, если в них находится поле с таким именем. Такая универсальность макроса вряд ли может быть отнесена к его достоинствам, поскольку в большинстве случаев макросы разрабатываются для применения с конкретными объектами. Для доступа к элементу объекта необходимо включить в макрокоманду его полную спецификацию, которая в общем случае имеет вид:
Тип_0бъекта'[Имя_0бъекта]'[Имя_Элемента]
В рассматриваемом примере полная спецификация поля формы, указываемая при задании условия, выглядит следующим образом:
FORMS'[Информация о клиентах]'[Номер договора] > 9999
Полная спецификация позволяет однозначно идентифицировать элемент формы. Восклицательный знак отделяет имя объекта от имени элемента. Если обрабатывается (анализируется) элемент отчета, то в качестве типа объекта следует задать тип Отчет. В результате спецификация будет иметь такой вид:
REPORTS'[Имя_0бъекта]'[Имя_Элемента]
Отладка макроса
Макрос не всегда функционирует так, как было задумано. Можно выделить две категории ошибок в макросах:
— синтаксические;
— логические.
Чаще всего появление ошибок в макросах обусловлено несоблюдением синтаксических правил. В случае выбора макрокоманд или значений аргументов в предлагаемых списках вероятность возникновения ошибки крайне мала. Совсем по-другому обстоит дело с аргументами, значения которых задаются "вручную". Если в имени объекта допущена ошибка, действие не может быть выполнено.
Основы языка Visual Basic for Applications
Access 97 позволяет автоматизировать обработку баз данных двумя способами: посредством макросов и путем программирования на языке Visual Basic for Applications.
Поскольку возможности языка макросов ограничены, для создания сложных приложений следует использовать язык Visual Basic for Applications (VBA), который доступен во всех приложениях Microsoft Office 97. Технология визуального программирования, реализованная в языке VBA, позволяет пользователям создавать приложения и самостоятельно решать многие задачи, не обращаясь к услугам профессиональных программистов.
У многих пользователей предложение самостоятельно написать несколько строк на языке программирования вызывает отрицательную реакцию. Однако все не так сложно, как кажется на первый взгляд. Это автор и попытался доказать в данной главе, предложив вниманию читателей небольшой, но хорошо проиллюстрированный обзор возможностей программирования на языке VBA.