Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика_Семестр1_Практическая3

.pdf
Скачиваний:
14
Добавлен:
05.06.2015
Размер:
1.18 Mб
Скачать

или выражения (в этом случае перед выражением пишется символ «=»). В частности, в качестве аргумента можно записать обращение к функции.

Аргумент «Сигнал» определяет подачу звукового сигнала при выводе сообщения (если значение этого аргумента «Да»). Если подача сигнала не нужна, следует задать значение «Нет». По умолчанию принимается значение

«Да».

Аргумент «Тип» задает тип окна сообщения. Допустимые значения: отсутствует, критическое, предупреждающее?, предупреждающее!, информационное. По умолчанию принимается значение «Отсутствует».

Аргумент «Заголовок» определяет текст, выводимый в строке заголовка окна сообщения. Если этот аргумент не задан, то в заголовке выводится текст: «Micrоsoft Access».

УстановитьСообщения. Включает или отключает вывод системных сообщений.

Единственный аргумент «Включить сообщения» может принимать значения: да (сообщения включены), нет (сообщения выключены). По умолчанию принимается «Нет».

Макрокоманда используется, если нужно запретить прерывание выполнения макроса для открытия модальных окон предупреждений и сообщений. Однако сообщения об ошибках выводятся на экран в любом случае. Кроме того, выводятся на экран все диалоговые окна, требующие от пользователя действий, отличных от простого нажатия кнопок (например, ввода текста или выбора параметра в группе).

После завершения макроса вывод системных сообщений автоматически включается.

3.4.ПРИМЕРЫ МАКРОСОВ.

Создадим несколько макросов для работы со следующими объектами базы данных:

1) Таблица Tizd с записями такой структуры:

Код предприятия

Изделие

Цена

Выпуски по кварталам

 

 

единицы

1кв

2кв

3кв

4кв

Kodp

Izd

Cena

v1

v2

v3

v4

2) Таблица Tabpred с записями следующей структуры:

Код предприятия

Название

Дата создания

Адрес

 

предприятия

 

 

Kodp

Pred

Dsozd

Adr

Латинскими буквами записаны имена соответствующих полей. Таблицы связаны по общему полю «Код предприятия».

41

3) Запрос по имени «Итоги по изделиям», выводящий данные такого

вида:

Изделие Годовой выпуск Стоимость годового выпуска.

4)Запрос по имени «Растущие выпуски», выводящий те записи из таблицы Tizd, у которых квартальные выпуски в течение года непрерывно растут.

5)Форма «Форма4», выводящая каждую запись таблицы Tizd вместе с названием предприятия в виде, представленном на рис. 3.3.

Рис. 3.3. «Форма4» в режиме формы.

6) Форма по имени «Форма5», выводящая на экран каждую запись таблицы Tizd со всеми ее полями.

Создание макросов.

Пример 3.4.1. С помощью макроса откроем запрос «Итоги по изделиям». Макрос состоит из одной макрокоманды ОткрытьЗапрос. Созданный макрос в режиме конструктора приведен на рис.6. 4.

Рис. 3.4. Макрос, открывающий запрос.

Пример 3.4.2. Требуется определить среднюю цену изделия «Принтер» у различных предприятий. Эту задачу можно решить разными способами, например:

- создать запрос, определяющий среднюю цену, и с помощью макроса запустить его на выполнение;

- создать макрос, состоящий из одной макрокоманды Сообщение.

В этом случае в качестве значения аргумента «Сообщение» нужно указать выражение, содержащее обращение к статистической функции по подмножеству:

= dAvg (“[Cena]”; “Tizd”; “[Izd] = ‘Принтер ‘”)

Макрос и результат его выполнения приведен на рис. 3.5.

Рис.3.5. Макрос, выводящий среднюю цену изделия «Принтер».

Пример 3.4.3. Надо определить и вывести среднюю цену произвольно заданного изделия.

Использовать статистическую функцию по подмножеству в макрокоманде Сообщение в этом случае нельзя, так как в аргументах статистических функций по подмножеству не допускается использование параметров. Поэтому способом решения будет создание запроса с параметром и запуск его на выполнение с помощью макрокоманды ОткрытьЗапрос. Запрос по имени «Средняя цена» определяет среднюю цену произвольно заданного изделия.

Рис. 3.6. Запрос и макрос для его запуска.

Созданный запрос в режиме конструктора и макрос для его запуска приведены на рис.6. 6.

Пример 3.4.4. Составить макрос, открывающий обе таблицы, запрос «Итоги по изделиям» и форму «Форма4» и располагающий их окна каскадом.

Этот макрос включает в себя пять макрокоманд: две макрокоманды

ОткрытьТаблицу, макрокоманду ОткрытьЗапрос, макрокоманду ОткрытьФорму и макрокоманду ВыполнитьКоманду. Аргументом

43

последней макрокоманды является команда «ОкноКаскадом». Макрос в режиме конструктора приведен на рис.3.7.

Рис. 3.7. Макрос для открытия таблиц и запроса.

Пример 3.4.5. Создать макрос, преобразующий таблицу Tizd в формат электронной таблицы и запускающий приложение Excel для обработки созданной таблицы.

Макрос состоит из одной макрокоманды ВывестиВФормате. Аргументы: тип объекта – таблица, имя объекта – Tizd (имя таблицы,

которую надо преобразовать).

Формат, в который надо преобразовать таблицу, определяется аргументом «Формат вывода» (выбираем значение «Microsoft Excel»).

Аргумент «имя файла» задает файл, в который помещается преобразованная таблица. Имя этого файла должно содержать полный путь к файлу (в нашем примере – а:\Tizd.xls ).

Немедленный запуск приложения Excel определяется значением аргумента «Автозагрузка» (укажем «Да»). Тогда в результате выполнения макроса на экране появляется окно Excel с таблицей, полученной в результате преобразования.

Макрос приведен на рис.3.8.

Рис. 3.8. Макрос для преобразования таблицы в формат Excel.

Пример 3.4.6. С помощью макроса реализуем следующую задачу. Если количество записей в таблице Tizd больше 4, то вывести только те записи, в которых цена единицы изделия превышает 1000. Если же количество записей в таблице меньше или равно 4, вывести все записи.

Отбор записей можно осуществить с помощью макрокоманды ПрименитьФильтр. Макрос состоит из двух макрокоманд. Первая из них открывает таблицу. Она выполняется в любом случае. При выполнения этой макрокоманды на экран выводятся все записи таблицы.

Вторая макрокоманда – ПрименитьФильтр должна выполняться только при выполнении условия. В качестве условия запишем выражение сравнения dCount(“[Kodp]”; “Tizd”) > 4. Здесь функция dCount определяет количество записей в таблице Tizd.

Поскольку фильтр заранее не создан, задаем критерий фильтрации непосредственно в макрокоманде с помощью аргумента «Условие отбора».

Рис. 3.9. Макрос для фильтрации по условию и результат его выполнения.

Если макрокоманда фильтрации выполнится, на экран выведутся только отфильтрованные записи, а предыдущее окно исчезнет. Макрос и результат его выполнения приведен на рис. 3.9.

Пример 3.4.7. Создать макрос, который при выводе в форме «Форма4» разных записей помечает их различными цветами в зависимости от соотношения стоимости годового выпуска изделий в данной записи и средней стоимости годового выпуска по всей таблице. Если стоимость годового выпуска в записи больше средней, то фон этого поля делается красным, иначе

– желтым.

Источником данных для данной формы является вспомогательный запрос «Запфор», содержащий, в частности, вычисляемое поле стоимости годового выпуска изделий (имя поля – Stoim).

В макросе используем две макрокоманды ЗадатьЗначение. Они присваивают значения нужных цветов свойству BackColor (цвет фона) поля

Stoim.

Для одной из макрокоманд используется условие:

45

[Forms]![Форма4]![Stoim]<=dAvg(“[Stoim]”;”Запфор”),

для другой

[Forms]![Форма4]![Stoim] > dAvg(“[Stoim]”;”Запфор”).

В этих выражениях текущее значение поля Stoim сравнивается с вычисленным с помощью статистической функции по подмножеству dAvg средним арифметическим значением стоимости. Источником данных для вычисления среднего арифметического является вспомогательный запрос «Запфор», в котором для каждой записи таблицы Tizd рассчитана стоимость годового выпуска.

Аргументы команды ЗадатьЗначение:

Первая команда: Элемент - [Forms]![Форма4]![stoim].[BackColor] Выражение – 65535

Вторая команда: Элемент – [stoim].[BackColor] Выражение – 255 Константа 65535 определяет желтый цвет, 255 – красный.

Для того, чтобы макрос адекватно устанавливал цвета фона в каждой записи, его запуск надо связать с событием формы «Текущая запись».

Текст макроса приведен на рис. 3.10.

Рис. 3.10. Макрос для изменения цвета фона поля формы.

Пример 6.4.8. Создать в форме «Форма5» поле, в котором отобразить максимальный квартальный выпуск изделий для каждой записи. Для вычисления максимума использовать макрос.

Создадим в форме свободное поле по имени MV и соответствующую надпись. Заполнять поле будем с помощью макроса «Макромакс». В нем используем четыре макрокоманды ЗадатьЗначение. Каждая из них присваивает значение полю MV. Сначала без всяких условий этому полю присвоим значение выпуска первого квартала (поля V1). Каждая последующая команда выполняется при выполнении условия – очередной квартальный выпуск сравнивается с MV и если оказывается больше, то сохраняется в поле MV. В результате в этом поле оказывается максимальное из значений полей V1, V2, V3, V4. Текст макроса приведен на рис. 3.11.

Рис. 3.11. Макрос для поиска максимального выпуска.

Созданный макрос надо связать с событием «Текущая запись» в форме. Тогда он будет выполняться при смене записи в форме и вычислять максимальный квартальный выпуск для каждой записи.

Пример 3.4.9. Модифицировать предыдущее задание так, чтобы максимальный квартальный выпуск выводился на экран только по желанию пользователя, а именно, после щелчка по соответствующей надписи. Если надпись не трогать, то максимальный квартальный выпуск не выводится.

Для решения этой задачи скопируем форму «Форма5» под именем «Форма6». В полученной форме создадим новую надпись, при щелчке по которой будет появляться на экране значение максимального квартального выпуска. Имя надписи – «Надпись11». Текст надписи: «Для получения максимального выпуска щелкните здесь».

Создадим новый макрос «Макромакс1», обеспечивающий отсутствие вывода на экран поля с максимальным выпуском MV и соответствующей ему надписи «Надпись8». Макрос состоит из двух макрокоманд ЗадатьЗначение, присваивающим значение «Ложь» свойству Visible (вывод на экран) поля MV и надписи «Надпись8».

Макрос и вид формы в результате его выполнения приведены на рис.

3.12.

47

Рис.3. 12. Макрос «Макромакс1» и форма после его выполнения.

Выполнение этого макроса должно быть связано с событием «Текущая запись» в форме «Форма6».

Модифицируем макрос «Макромакс», добавив в него еще две макрокоманды ЗадатьЗначение, обеспечивающие вывод на экран надписи «Надпись8» и поля MV. Эти макрокоманды присваивают свойству Visible (вывод на экран) обоих элементов значение «Истина», в результате чего невидимые раньше элементы становятся видимыми. Новый макрос сохраним с именем «Макромакс2».

Макрос должен выполняться только после щелчка по следующей надписи в форме: «Для получения максимального выпуска щелкните здесь». Имя этой надписи – «Надпись11». Поэтому выполнения макроса надо связать с событием «Нажатие кнопки» в окне свойств этой надписи.

Макрос и результат его выполнения приведены на рис. 3.13.

Рис. 3.13. Макрос «Макромакс2» и форма после его выполнения.

Пример 3.4.10. Составить макрос, прекращающий сеанс работы с Access и закрывающий ее окно.

Этот макрос состоит из одной макрокоманды Выход. В качестве значения аргумента «Параметры» используем назначаемое по умолчанию значение «Сохранить все». Тогда при выходе из приложения все несохраненные ранее объекты автоматически сохраняются в БД.

Имя сохраненного макроса – «Макрос9».

6.5. СПОСОБЫ ВЫПОЛНЕНИЯ МАКРОСОВ.

Макрос можно запустить на выполнение вручную (в интерактивном режиме) или автоматически.

Для интерактивного запуска макроса можно:

-дважды щелкнуть его имя на вкладке «Макросы»;

-щелкнуть кнопку «Запуск» в панели инструментов;

-в режиме конструктора макроса щелкнуть кнопку «Запуск» на панели инструментов;

-выполнить команду из встроенного меню: Сервис – Макрос - Выполнить макрос;

-выполнить команду из пользовательского меню (если оно ранее было создано).

Автоматически макрос выполняется в следующих случаях:

-при наступлении события, с которым связан макрос;

-когда он вызывается из другого макроса с помощью макрокоманды

ЗапускМакроса.

Рассмотрим некоторые примеры запуска макроса при наступлении события.

Пример 3.5.1. Обеспечить вывод сообщения о средней цене принтеров при открытии формы «Форма4» в режиме формы.

Это сообщение выводится с помощью макроса «Макрос2». Поэтому надо обеспечить выполнение этого макроса при открытии формы.

Откроем форму «Форма4» в режиме конструктора. Выделим всю форму, для чего щелкнем мышью маленький квадратик в левом верхнем углу формы. Откроем окно свойств формы и выберем вкладку «События». Сопоставим событию «Открытие» макрос «Макрос2» (выберем его имя из списка в правой графе строки с событием «Открытие»).

Результат: при открытии формы «Форма4» в режиме формы сначала выводится окно сообщения, являющееся результатом выполнения макроса «Макрос2», и после его закрытия на экране появляется форма. Окно свойств формы показано на рис. 3.14.

49

Рис. 3.14. Вкладка «События» окна свойств формы.

Для выделения разным цветом значения стоимости годового выпуска в каждой записи используется «Макрос5», который должен выполняться для каждой отображаемой записи. Поэтому его запуск надо связать с событием «Текущая запись» этой формы. Эта связь также видна на рис. 3.14.

Пример 3.5.2. Для того, чтобы в форме «Форма5» для каждой записи отображалось значение максимального квартального выпуска в поле MV, вычисляющий его макрос должен выполняться при смене записи в форме. Поэтому связываем его с событием «Текущая запись» этой формы.

Окно свойств этой формы с раскрытой вкладкой «События» показано на рис. 3.15.

Рис. 3.15 Вкладка «События» окна свойств формы «Форма5».