¨ Пусть необходимо в сеансе ввода данных в таблицу УСПЕВАЕМОСТЬ подготавливать и выводить отчеты о полученных студентами двойках и пятерках.
Для решения задачи при заполнении таблицы УСПЕВАЕМОСТЬ через форму УСПЕВАЕМОСТЬ данными о результатах экзаменов подключим макрос, который будет заполнять таблицу ДВОЕЧНИКИ и таблицу ОТЛИЧНИКИ. По завершении заполнения таблицы УСПЕВАЕМОСТЬ макрос должен распечатывать соответствующие отчеты. Таблицы ДВОЕЧНИКИ и ОТЛИЧНИКИ после выдачи отчетов надо очищать. Это позволит в очередном сеансе ввода данных в таблицу УСПЕВАЕМОСТЬ для одной или нескольких групп студентов выдать отчеты для этих групп, а также использовать макрос при корректировках таблицы. В этом случае будут выдаваться отчеты по внесенным изменениям.
Макрос "Списки успеваемости", реализующий такую задачу, является группой из трех макросов.
Рисунок 47
r Макрос "Начало" открывает формы, используемые для заполнения таблиц ДВОЕЧНИКИ и ОТЛИЧНИКИ. Для выполнения этого макроса в момент, когда пользователь открывает форму УСПЕВАЕМОСТЬ, в свойства формы в строку события "Открытие" надо ввести имя макроса:
|
|
[Списки успеваемости].[Начало]'
Замечание
Если нет необходимости наблюдать за процессом наполнения списков двоек и пятерок через форму, могут быть использованы непосредственно таблицы ДВОЕЧНИКИ и ОТЛИЧНИКИ. Кроме того, чтобы они не отображались на экране, их можно, например, свернуть,
r Второй макрос, "Формирование", анализирует введенную оценку и в зависимости от результата формирует новую запись в одной из таблиц (ДВОЕЧНИКИ или ОТЛИЧНИКИ). При вводе удовлетворительной оценки макрос не формирует запись. Чтобы макрос выполнялся при обновлении каждой записи в форме УСПЕВАЕМОСТЬ, в свойствах формы в строке события "После обновления" надо ввести имя этого макроса:
[Списки успеваемости].[Формирование]
Замечание
Предполагается, что таблицы ДВОЕЧНИКИ и ОТЛИЧНИКИ имеют ключи, которые не допускают повторного ввода записи с одинаковыми значениями ключа. В противном случае запись об одной и той же оценке может повторяться в формируемой таблице, если пользователь неоднократно работает с записью. Если необходимо предусмотреть такой вариант, то вместо макрокоманды "НаЗапись" можно использовать макрокоманду "ПрименитьФильтр" С помощью этой макрокоманды можно отфильтровать формируемую таблицу, и, если там уже есть запись именно об этой оценке студента, она просто будет записана поверх старой, т. е. ее полям повторно будут присвоены те же значения.
r Третий макрос, "Отчеты", открывает отчеты с данными об оценках, введенными в таблицы ДВОЕЧНИКИ и ОТЛИЧНИКИ, очищает таблицы, подготавливая их к последующим сеансам работы с экзаменационными ведомостями, и закрывает их. Для того чтобы макрос выполнялся при закрытии пользователем формы УСПЕВАЕМОСТЬ, в свойствах формы в строке события "Закрытие" вводится имя этого макроса
|
|
[Списки успеваемости].[ Отчеты].
Рассмотрим назначение макрокоманд в макросе "Формирование".
r Макрокоманда "НаЗапись" позволяет сделать текущей новую запись в форме ДВОЕЧНИКИ. Имя этой формы указывается в аргументах макрокоманды. В аргументе <3апись> указывается, что новая запись должна стать текущей. Макрокоманда и три следующие за ней макрокоманды, в условии которых стоит многоточие, будут выполняться только в том случае, если в текущей записи формы УСПЕВАЕМОСТЬ в поле ОЦЕНКА стоит двойка
r Макрокоманды "ЗадатьЗначение присваивают полям новой записи формы ДВОЕЧНИКИ значения из полей текущей записи формы УСПЕВАЕМОСТЬ. Аргумент макрокоманды <элемент> определяет поле, которому должно присваиваться значение. Аргумент <выражение> определяет поле, из которого выбирается это значение
В аргументе <элемент> задана ссылка
Forms!Двоечники![имя поля].
В аргументе <выражение> задана ссылка
Forms! Успеваемость![имя поля].
Аналогичные действия выполняют макрокоманды, включенные в набор записей с условием оцЕНКА=5, но они работают е формой ОТЛИЧНИКИ.
Рассмотрим назначение макрокоманд в макросе "Отчеты".
r Макрокоманда "ОткрытьОтчет" выводит отчет на экран в режиме предварительного просмотра. Имя отчета и режим его открытия указываются аргументами макрокоманды. Если нет необходимости просматривать отчет, можно сразу получить печатный документ, установив в аргументе режим печати. Отчет, открытый для просмотра, будет отображаться на экране до тех пор, пока пользователь не закроет его
r О Макрокоманда "ВыделитьОбъект" делает текущей указанную в аргументе форму ДВОЕЧНИКИ. Это позволяет в следующих макрокомандах выполнять команды меню для этого объекта
r О Макрокоманда "ВыполнитьКоманду" автоматически выполняет команду стандартного меню, заданную в ее аргументах. Вызов этой макрокоманды эквивалентен выбору пользователем указанной команды в стандартном меню Access. Первая из записанных в макросе макрокоманд "ВыполнитьКоманду" выполняет заданную в аргументах макрокоманды команду (Command) — SelectAllRecords (Выделить все записи), что равносильно выполнению этой команды в меню Правка<Е(1и/ Вторая — выполняет команду (Command) Delete (Удалить) также принадлежащую меню Правка Обязательный аргумент <команда> ( Command ) указывает команду, которую следует выполнить. В раскрывающемся списке этой строки выводятся все команды стандартного меню Access. Однако выбирать следует только те команды, которые доступны для выполнения в текущем режиме.
r Макрокоманда "Закрыть" закрывает форму ДВОЕЧНИКИ, имя которой указывается в аргументе макрокоманды
Аналогичными макрокомандами выполняется удаление всех записей формы ОТЛИЧНИКИ и ее закрытие.
Дополнением макроса "Начало" макрокомандами, определяющими размещение объектов на экране, можно получить удобное отображение всех форм. Это позволит наблюдать синхронный процесс ввода данных и заполнения таблиц для отчета.