Немалую роль в создании комфортных условий работы в среде Access 97 играет представление на экране окон. При работе с каталогом телефонов клиентов наиболее удобно полноэкранное представление окна формы. При этом пользователь сразу увидит значительную часть информации. Установить такой режим представления формы можно с помощью простого макроса. Спроектируем этот макрос, для чего:
- Создать новый макрос и в первое поле столбца Макрокоманда ввести макрокоманду Развернуть.
- Сохранить макрос под именем Полноэкранное представление.
- Открыть форму Каталог телефонов в режиме конструктора и окно ее свойств.
- Для опции Открытие установить значение Полноэкранное представление. В результате при открытии окна формы Каталог телефонов будет выполняться макрос Полноэкранное представление, активизирующий соответствующий режим.
- Сохранить форму.
Есть и другие способы выбора представления окна посредством макроса. Задать представление окна формы можно с помощью аргумента Режим окна макрокоманды ОткрытьФорму. Доступны следующие значения аргумента Режим окна:
Значение аргумента | Представление окна формы |
Normal (Обычное) | Соответствует установкам в окне свойств формы |
Hidden (Невидимое) | Соответствует команде Скрыть из меню Окно |
Ikon (Значок) | Представление в свернутом виде |
Dialog (Окно диалога) | Определение окна формы как монопольно всплывающего |
Если установлено значение Окно диалога, окно формы открывается поверх остальных окон Access 97. Чтобы получить доступ к этим окнам, окно формы необходимо закрыть. Такой режим применяют при блокировке обращения пользователей к другим окнам.
Значение Обычное устанавливается по умолчанию. В этом случае можно задать местоположение и размер окна с помощью специальной команды СдвигРазмер (MoveSize). Местоположение открываемого окна определяется путем указания расстояния по вертикали вниз и по горизонтали вправо от левого верхнего угла окна Access 97. Размер окна по вертикали равен значению аргумента Высота, а по горизонтали - значению аргумента Ширина. В качестве единицы измерения используются сантиметры или дюймы (в зависимости от установок в Панели управления Windows). Обозначения единиц измерения вводить не обязательно, они вставляются автоматически при переходе к полю следующего аргумента.
Примечание: Команда СдвигРазмер не воздействует на окно формы, если перед ее выполнением для аргумента Режим окна макрокоманды ОткрытьФорму было установлено значение Окно диалога.
УКАЗАНИЕ ИМЕН ОБЪЕКТОВ
Чтобы сослаться на элемент или свойство объекта базы данных, необходимо знать его точное имя. Имена элементов должны быть уникальными в одной форме (отчете) и могут совпадать в разных формах (отчетах). При создании ссылки на элемент управления необходимо учитывать, какой объект базы данных является активным.
В рассмотренных примерах макросы Управление вводом и Сообщение о клиенте запускаются непосредственно из открытой формы, поэтому имена полей Населенный пункт и Оклад, указанные в макросе, однозначно идентифицируют обрабатываемый объект.
Чтобы сослаться на элемент неактивного объекта, нужно указать полное имя этого элемента. Например, если запустить макрокоманду Управление вводом из окна базы данных, не открывая форму, содержащую поле Оклад, то выполнение макроса будет прервано. Этот макрос можно использовать в другой форме или в другом отчете, если в них находится поле с таким именем. Такая универсальность макроса вряд ли может быть отнесена к его достоинствам, поскольку в большинстве случаев макросы разрабатываются для применения с конкретным объектами. Для доступа к элементу объекта необходимо включить в макрокоманду его полную спецификацию, которая в общем случае имеет вид:
[Тип_ Объекта]![Имя_ Объекта]![Имя_ Элемента]
В рассматриваемом примере полная спецификация поля формы, указываемая при задании условия, выглядит следующим образом:
[Forms]![Зарплата]![Оклад] > 10000
Полная спецификация позволяет однозначно идентифицировать элемент формы. Восклицательный знак отделяет имя объекта от имени элемента. Если обрабатывается (анализируется) элемент отчета, то в качестве типа объекта следует задать тип Reports. В результате спецификация будет иметь такой вид:
[Reports]! [Имя_ Объекта]![Имя_ Элемента]
УСТАНОВКА ЗНАЧЕНИЙ
Выше были рассмотрены случаи доступа к полям формы с целью анализа их содержимого. С помощью макроса проверялись некоторые условия, в зависимости от результата проверки выполнялись те или иные операции. При интерактивной работе с базой данных часто возникает необходимость использовать макросы не только для анализа данных, но и для установки значений.
Рассмотрим данную тему на примере. Создадим форму Запрос, которая позволит автоматизировать поиск телефонных номеров в каталоге. Критерий поиска номера должен вводиться в поле этой формы. Содержимое поля с критерием поиска будет применяться в качестве фильтра для формы Каталог телефонов. Номер телефона, полученный в результате фильтрации, должен быть скопирован из этой формы в буфер обмена и вставлен в поле индикации формы Запрос.
Форма Запрос должна содержать текстовые поля Фамилия и Телефон, а также кнопки Поиск и Отмена. Создать ее нетрудно. При этом следует воспользоваться конструктором форм, выбрав в качестве базовой таблицу Адреса. В окне конструктора формы следует разместить в области данных поля и кнопки так, как показано на рисунке.
-------------- --------------------- | Фамилия | | | -------------- --------------------- -------------- --------------------- | Телефон | | | -------------- --------------------- ----------- ----------- | Поиск | | Отмена | ----------- ----------- |
В строке Данные свойств поля Фамилия должно быть установлено значение Фамилия.
Для автоматизации работы с такой формой понадобятся три макроса:
- Открыть запрос - открывает форму Запрос в режиме заполнения;
- Поиск запроса - макрос для кнопки Поиск;
- Прервать запрос - макрос для кнопки Отмена.
Макрос Открыть запрос состоит только из одной макрокоманды - ОткрытьФорму. При этом аргумент Режим окна должен иметь значение Окно диалога, чтобы размер окна был неизменен. Макрос Прервать запрос состоит из макрокоманды Закрыть, у которой аргумент Тип объекта имеет значение Форма, a apгумент Имя объекта - значение Запрос. Макрос Поиск запроса несколько сложнее. Для его разработки необходимо выполнить следующие действия:
- Создать новый макрос, в котором первой должна быть макрокоманда ОткрытьФорму со значением Каталог телефонов для аргумента Имя формы . Таким образом будет открыта форма Каталог телефонов.
Для аргумента Режим окна необходимо установить значение Значок. В качестве значения для аргумента Условие отбора необходимо использовать следующее выражение:
[Фамилия]=Forms![Запрос]![Фамилия]
Это выражение будет применяться в качестве фильтра для формы Каталог телефонов, отображаемой в виде пиктограммы.
- Во вторую строку макроса ввести макрокоманду КЭлементуУправления со значением Телефон для аргумента Имя элемента. В результате содержимое поля Телефон найденной записи будет маркировано.
- В третью строку вставить макрокоманду ВыполнитьКоманду с аргументом Copy . В результате номер телефона будет скопирован в буфер обмена.
- В следующую строку ввести макрокоманду Закрыть, после выполнения которой форма Каталог телефонов будет закрыта. Для аргумента Тип объекта этой макрокоманды установить значение Форма, а для аргумента Имя объекта - Каталог телефонов. Таким образом будет указан тип закрываемого объекта и его имя.
- В следующую строку ввести макрокоманду ВыделитьОбъект. Установить для ее аргумента Тип объекта значение Форма, а для аргумента Имя объекта - значение Запрос. Данная макрокоманда активизирует форму Запрос.
- Следующая макрокоманда КЭлементуУправления с аргументом Телефон предназначена для выделения поля Телефон формы Запрос.
- Последняя макрокоманда, ВыполнитьКоманду, с аргументом Paste помещает содержимое буфера обмена в поле Телефон формы Запрос.
- Сохранить макрос под именем Поиск запроса.
Входящее в макрокоманду ОткрытьФорму условие автоматически оформляется как фильтр. Условием отбора записей этим фильтром является идентичность содержимого поля Фамилия формы Запрос и поля Фамилия формы Каталог телефонов (последняя открывается с помощью макрокоманды ОткрытьФорму, поэтому можно обойтись краткой формой записи, а не указывать полное имя этой формы). В результате фильтрации форма Каталог телефонов будет содержать только ту запись, которая соответствует критерию фильтрации. После этого поле Телефон отфильтрованной записи активизируется, а его содержимое копируется в буфер обмена. Все это происходит, когда форма Каталог телефонов отображается на экране в виде пиктограммы.
Внимание!
При обработке полей некоторого объекта нельзя устанавливать для него режим отображения Скрыть, поскольку в этом случае поля скрытого объекта недоступны.
После закрытия формы Каталог телефонов активизируется поле Телефон формы Запрос, в которое вставляется номер телефона из буфера обмена.
Чтобы обеспечить нормальное функционирование формы Запрос, необходимо связать макросы Поиск запроса и Прервать запрос с соответствующими кнопками в форме. Для этого следует перейти в режим конструктора формы, маркировать кнопку Поиск и открыть окно ее свойств. В качестве значения параметра Нажатие кнопки надлежит задать имя макрокоманды Поиск запроса. Те же действия нужно выполнить и для кнопки Отмена, связав с ней макрокоманду Прервать запрос.
Если нужная фамилия не найдена в форме Каталог телефонов, макрос Поиск запроса выдает сообщение об ошибке при выполнении команды ВыполнитьКоманду с аргументом Copy и завершается из-за того, что в результате фильтрации не найдена ни одна запись, удовлетворяющая заданным условиям. Команда КЭлементуУправления в таком случае активизирует поле Телефон, но не маркирует его содержимое, что приводит к невыполнению команды Copy и к появлению сообщения об ошибке.
Чтобы сообщение об ошибке не появлялось при отсутствии в поле Телефон отобранной записи, в макрос следует включить условие обработки макрокомандой исключительной ситуации. Форму Каталог телефонов необходимо закрыть, а в поле Телефон формы Запрос - поместить текст Не указан (это реакция на исключительную ситуацию). После этого сообщения можно прервать выполнение макроса.
Чтобы реализовать намеченный план внесения изменении в макрос, необходимо выполнить следующие действия:
- Открыть макрос Поиск запроса в режиме конструктора и после второй строки вставить четыре пустые строки с помощью кнопки Добавить строки панели инструментов.
- Открыть столбец условий Условия.
- В поле Условия третьей строки ввести следующее выражение:
Forms![Каталог телефонов]![Телефон]=""
Это условие, позволяющее проверить, пусто ли поле Телефон.
- Пустые строки (включая первую, в которой указано условие) должны содержать последовательность макрокоманд, представляющих собой реакцию на возникновение описываемой условием ситуации. В поле Макрокоманда рядом с условием ввести макрокоманду Закрыть для закрытия формы Каталог телефонов.
- В следующей строке поля условий ввести многоточие, а поля Макрокоманда - ВыделитьОбъект. Для аргумента Тип объекта этой макрокоманды установить значение Форма, а для аргумента Имя объекта - значение Запрос.
- Следующую строку начать с многоточия и ввести в нее макрокоманду ЗадатьЗначение. Для аргумента Элемент задать значение Телефон (в это поле макрокоманда будет устанавливать значение), а для аргумента Выражение - значение "Не указан" (кавычки обязательны!).
- В последнюю пустую строку ввеcти макрокоманду Остановить- Макрос. В поле Условие этой макрокоманды вставить многоточие.
- Сохранить макрос.
Условие в первой из вставленных строк проверяет, не является ли поле Телефон в форме Каталог телефонов пустым. Если это поле ничего не содержит (т.е. содержит строку нулевой длины ""), условие соблюдается, и выполняется макрокоманда Закрыть.
Многоточия в столбце условий следующих трех строк нужны для того, чтобы макрокоманды в этих строках выполнялись при соблюдении того же условия. Посредством команды ЗадатьЗначение в поле Телефон формы Запрос передается текст Не указан, после чего макрос прерывается с помощью макрокоманды ОстановитьМакрос.
Внимание!
При отсутствии макрокоманды ОстановитьМакрос выполнение макроса продолжается со следующей макрокоманды, а пользователь получает повторное сообщение об ошибке при попытке скопировать отсутствующее содержимое поля в буфер обмена.
ЗАДАНИЕ
1. Создать макросы с условием по полям: Оклад – не более 20000, Дата рождения – не менее 18 лет, Дата рождения – не более сегодняшней даты.
2. Создать макрос для полноэкранного представления форм по таблицам Зарплата и Сведения.
3. Скорректировать макросы, созданные по п.1, указав полную спецификацию полей формы.
4. Создать форму, позволяющую осуществлять поиск в таблице Зарплата по полю Фамилия с выдачей информации по окладу, дате приема и суммарному доходу. В форме, кроме кнопки Поиск, должны быть кнопки Отмена и Продолжить. В макросе должна быть предусмотрена реакция на исключительную ситуацию.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Каким образом создаются макросы с условием ?
2. Как создать макрос для полноэкранного представления формы ?
3. Каким образом указываются адреса в макросах ?
4. Укажите последовательность создания макроса, осуществляющего поиск в таблице.
5. Как отразить в макросе исключительную ситуацию ?
ЛАБОРАТОРНАЯ РАБОТА N 12
РАБОТА С ПРИЛОЖЕНИЯМИ И ПРОГРАММАМИ. ОФОРМЛЕНИЕ МЕНЮ
Цель работы: Освоить работу макросов с приложениями и прикладными программами, автоматизацию печати и создания собственной строки меню.
ВЫЗОВ ПРИЛОЖЕНИЙ И УПРАВЛЕНИЕ ИМИ
С помощью макроса можно запустить из Access приложения Microsoft Office 97, а также программы, работающие под управлением Windows 95, Windows NT или DOS, например, чтобы выполнить некоторые вычисления (с помощью Excel 97) или сделать небольшие заметки посредством редакторов Notepad и Word 97. Вызов выполняется одинаково во всех случаях и заключается главным образом в указании имени запускаемой программы. Макрос для вызова прикладной программы можно связать с кнопкой формы, таким образом ускорив доступ к нужному приложению. Для демонстрации сказанного необходимо:
- Создать новый макрос. В первой строке ввести макрокоманду ЗапускПриложения.
- В качестве значения аргумента Командная строка ввести имя запускаемой программы, например WinWord .
- Сохранить макрос под именем Заметки.
- Открыть форму Каталог телефонов в режиме конструктора и перетащить макрос из окна базы данных в область данных формы.
- Активизировать режим формы и щелкнуть мышью на кнопке Заметки.
После запуска этого макроса (щелчком на кнопке Заметки в форме Каталог телефонов) на экране появится окно текстового редактора Word пакета Microsoft Office 97. Теперь пользователь может ввести свои заметки, распечатать или сохранить их.
При вызове программы всегда приводится полная спецификация ее файла. При этом вводить расширение не следует. Каталог, в котором хранится файл, необходимо указывать только в том случае, если он не задан командой PATH в файле AUTOEXEC.BAT. Например:
с:\games\pocker\run_pock
Как правило, при вызове прикладных программ, входящих в комплект поставки Windows 95, папка Windows указана в команде PATH. Поэтому имя редактора в данном макросе приведено без указания каталога.
Внимание!
В среде Windows можно запустить несколько копий редактора Word 97. Это значит, что повторное нажатие кнопки Заметки в окне формы Access 97 приведет к открытию нового окна редактора независимо от того, закрыто ли предыдущее.
Необходимо следить за тем, чтобы после окончания сеанса работы редактор был правильно закрыт.
ЗАПУСК ПРИКЛАДНЫХ ПРОГРАММ С ПАРАМЕТРАМИ
Запуская прикладные программы с помощью макрокоманды Запуск- Приложений, можно указывать ключи, которые обычно вводятся в командной строке после имени программы при запуске с уровня DOS. Эти ключи служат для задания режима работы прикладной программы. Если, к примеру, из макроса запускается редактор Word 97, то параметр /t имя документа применяется для загрузки документа с указанным именем, который используется в качестве шаблона. Ключ /п указывается при запуске Word 97 без открытия нового документа. Способ указания ключей в аргументе Command Line такой же, как в командной строке DOS, например:
C:\Program Files\Microsoft Office\0ffice\winword.exe /n Использование ключей допускается при запуске большинства прикладных программ.
Вернемся к макросу, разработанному для вызова редактора Word 97, и несколько модифицируем его. При каждом вызове редактора целесообразно использовать для заметок один и тот же документ (по умолчанию каждый вызов Word 97 сопровождается открытием нового документа). Для этого необходимо:
- Перейди в окно Word 97 и вставить в первую строку документа через меню Вставка поле - Дата и время.
- Сохранить документ Word 97 под именем Заметки в папке Мои Документы, не указывая расширение .doc, и закрыть окно Word 97.
- Маркировать макрос Заметки в окне базе данных и активизировать режим конструктора.
- Присвоить аргументу Командная строка значение WinWord Заметки и сохранить макрос.
Внимание!
Если сохранить документ Заметки в папке, путь к которой не указан в команде PATH файла AUTOEXEC.BAT, в качестве значения аргумента Командная строка придется задавать полную спецификацию документа.
При каждом новом вызове редактора в документ заметок вводятся системная дата и системное время, таким образом, содержимое автоматически протоколируется.
Дата: 2018-12-28, просмотров: 271.