Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пос_БД_SQL_Server_Access.doc
Скачиваний:
9
Добавлен:
01.03.2025
Размер:
2.41 Mб
Скачать

6.10. Пример создания макроса, работающего с данными нескольких объектов

Пусть необходимо в сеансе ввода данных в таблицу УСПЕВАЕМОСТЬ подготавливать и выводить отчет о полученных студентами двойках. Для решения задачи необходимо при заполнении таблицы УСПЕВАЕМОСТЬ через форму УСПЕВАЕМОСТЬ данными о результатах экзаменов подключить макрос, который будет заполнять таблицу Двоечники. По завершении заполнения таблицы УСПЕВАЕМОСТЬ макрос должен распечатывать соответствующий отчет. Таблицу ДВОЕЧНИКИ перед заполнением надо очищать от данных предыдущего ввода.

Макрос «Списки двоечников», реализующий такую задачу, является группой из трех макросов (табл. 6.4.).

Таблица 6.4

Макрос «Списки двоечников»

Имя макроса

Условие

Макрокоманда

Примечание

Начало

СдвигРазмер

Установить положение окна формы УСПЕВАЕМОСТЬ

Открыть форму

Двоечники

Выделить объект

Форму Двоечники

Выполнить команду

SelectAllRecords – Правка|Выделить все записи

Выполнить команду

Delete – Правка|Удалить

СдвигРазмер

Установить положение окна формы ДВОЕЧНИКИ

Продолжение табл. 6.4

Формирование

[ОЦЕНКА]=2

НаЗапись

Сделать текущей новую запись в форме Двоечники

ЗадатьЗначение

Присвоить полям в текущей записи формы Двоечники значения из полей текущей записи формы Успеваемость

ЗадатьЗначение

Задать значение второго поля

ЗадатьЗначение

Задать значение третьего поля и т.д.

ЗадатьЗначение

Задать значение последнего поля

Отчет

ОткрытьОтчет

Двоечники

Закрыть

Форму Двоечники

Макрос «Начало» открывает форму, используемую для заполнения таблицы ДВОЕЧНИКИ, очищает таблицу от данных, подготавливая ее к сеансу работы с экзаменационными ведомостями. Для выполнения этого макроса в момент, когда пользователь открывает форму УСПЕВАЕМОСТЬ, в свойствах формы в строку события «Открытие» (On Open) надо ввести имя макроса:

[Списки двоечников].[Начало]

Второй макрос, «Формирование», анализирует введенную оценку и в зависимости от результата формирует новую запись в таблице ДВОЕЧНИКИ.

При вводе удовлетворительной оценки макрос не формирует запись. Чтобы макрос выполнялся при обновлении каждой записи в форме УСПЕВАЕМОСТЬ, в свойствах формы в строке события «После обновления» (After Update) надо ввести имя макроса:

[Списки двоечников].[Формирование]

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

Третий макрос, «Отчет», открывает отчет с данными об оценках, введенных в таблицу ДВОЕЧНИКИ, и закрывает форму ДВОЕЧНИКИ. Для того, чтобы макрос выполнялся при закрытии пользователем формы УСПЕВАЕМОСТЬ, в свойствах формы в строке события «Закрытие» (On Close) вводится имя этого макроса:

[Списки двоечников].[Отчет]

Рассмотрим назначение макрокоманд в макросе «Начало».

Макрокоманда «СдвигРазмер» (MoveSize) позволяет задать размер и местоположение окна активного объекта. С помощью данной макрокоманды можно получить удобное отображение всех форм. Это позволит наблюдать синхронный процесс ввода данных и заполнения таблицы для отчета.

Макрокоманда «ВыделитьОбъект» (SelectObject) делает текущей указанную в аргументе форму Двоечники. Это позволяет в следующих макрокомандах выполнять команды меню для этого объекта.

Макрокоманда «ВыполнитьКоманду» (RunCommand) автоматически выполняет команду стандартного меню, заданную в ее аргументах. Вызов этой макрокоманды эквивалентен выбору пользователем указанной команды в стандартном меню Access. Первая из написанных в макросе команд «ВыполнитьКоманду» (RunCommand) выполняет заданную в аргументах макрокоманды команду (Command) - SelectAllRecords (Выделить все записи), что равносильно выполнению этой команды в меню Правка (Edit). Вторая - выполняет команду (Command) Delete (Удалить) также принадлежащую меню Правка.

Обязательный аргумент <команда> (Command) указывает команду, которую следует выполнить. В раскрывающемся списке этой строки выводятся все команды стандартного меню Access. Однако выбирать следует только те команды, которые доступны для выполнения в текущем режиме.

Рассмотрим назначение макрокоманд в макросе «Формирование».

Макрокоманда «НаЗапись» (GoToRecord) позволяет сделать текущей новую запись в форме ДВОЕЧНИКИ. Имя этой формы указывается в аргументах макрокоманды. В аргументе <Запись> (Next) указывается, что новая запись должна стать текущей. Макрокоманда и четыре последующие за ней макрокоманды, в условиях которых стоит многоточие, будут выполняться только в том случае, если в текущей записи формы УСПЕВАЕМОСТЬ в поле ОЦЕНКА стоит двойка.

Макрокоманды «ЗадатьЗначение» (SetValue) присваивают полям новой записи формы ДВОЕЧНИКИ значения из полей текущей записи формы УСПЕВАЕМОСТЬ. Аргумент макрокоманды <Элемент> (Item) определяет поле, которому должно присваиваться значение. Аргумент <Выражение> (Expression) определяет поле, из которого выбирается это значение.

В аргументе <Элемент> (Item) может быть задана ссылка

Forms!Двоечники![имя поля].

В аргументе <Выражение> (Expression) может быть задана ссылка

Forms!Успеваемость![имя поля].

Рассмотрим назначение макрокоманд в макросе «Отчет».

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

Макрокоманда «Закрыть» (Close) закрывает форму ДВОЕЧНИКИ, имя которой указывается в аргументе макрокоманды.

Связывание макроса с событиями, возникающими в форме Успеваемость:

  1. закладка Формы, выделить форму Успеваемость, кнопка Конструктор;

  2. Правка, Выделить форму, открыть окно свойств формы (кнопка Свойства на панели инструментов);

  3. закладка События, в строке события Открытие выбрать из списка Макрос.Начало;

  4. в строке события После обновления выбрать из списка Макрос.Формирование;

  5. в строке события Закрытие выбрать из списка Макрос.Отчет;

  6. закрыть окно свойств, кнопка Сохранить и выйти из режима Конструктор.