УПРАВЛЕНИЕ ПРЕДСТАВЛЕНИЕМ ОБЪЕКТОВ ИЗ МАКРОСА
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Немалую роль в создании комфортных условий работы в среде 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 приложения Mic­rosoft 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.