ЛАБОРАТОРНАЯ РАБОТА № 7. Автоматизация управления базой данных.
Цель работы:Освоение некоторых возможностей автоматизации управления базой данных. Создание и применение макросов. Создание пользовательского кнопочного и ниспадающего меню.
Краткие сведения
При работе с базой данных часто приходится многократно выполнять одинаковые порой рутинные операции. Вполне естественно было бы автоматизировать их выполнение. Для этого Access располагает достаточными средствами, позволяющими во многом автоматизировать и упорядочить работу с базой данных. К числу таких средств относятся:
- пользовательские меню и инструментальные панели;
- кнопочные формы управления базой данных;
- средства настройки параметров запуска базы данных;
- макросы и модули.
Создание пользовательского меню
Задание 1.Создайте пользовательское меню для управления базой данных, содержащее категории Формы и Отчеты с пунктами (командами) для открытия ранее составленных форм и отчетов.
Технология
1. Для создания новой строки меню откройте окно Настройка. Для этого выполните команду ВИД/Панели инструментов/Настройка или, щелкнув правой клавишей по любой панели инструментов, выберите в контекстном меню пункт Настройка.
2. В окне Настройка на вкладке Панели инструментов щелкните по кнопке Создать.
3. В окне Создание панели инструментов введите имя панели инструментов: Управление базой данных. Нажмите кнопку Ok. В окне Access появится небольшая миниатюра панели. Перетащите созданную панель инструментов в верхнюю часть окна Access, установив над строкой меню.
4. В окне Настройка нажмите кнопку Свойства и определите тип созданной панели - Строка меню. Закройте окно установки свойств.
5. Добавьте в строку созданного меню категорию Формы. Для этого в окне Настройка откройте вкладку Команды и в списке категорий щелкните по категории Новое меню. Перетащите команду Новое меню из списка команд в правом подокне на строку меню Управление базой данных. Не закрывая окно Настройка, щелкните правой клавишей в строке меню по категории Новое меню и в контекстном меню замените имя категории на Формы.
6. Добавьте в меню категорию Отчетыаналогично пункту 5.
7. Аналогично добавьте в меню Формы новое подменю, назвав его Простые.
8. В окне Настройка на вкладке Команды выделите категорию Все формы. Перетащите строку с названием одной из созданных ранее форм - Студент простая в область команд (пунктов) категории Формы строки меню Управление базой данных. Включив контекстное меню новой команды, установите стиль отображения - Только текст.
9. Аналогично добавьте в область команд категории Формы/Простыепункты с названием форм – Группа и Простая форма по запросу.
10. Добавьте в категорию Отчеты меню Управление базой данных пункты с названиями отчетов. Закройте окно Настройка. Проверьте работу меню.
11. Выполните команду СЕРВИС/Параметры запуска и установите в окне Параметры запуска следующие параметры запуска при открытии базы данных:
- введите в качестве заголовка приложения название Академия;
- выберите в качестве строки меню строку Управление базой данных.
- отмените вывод на экран окна базы данных, строки состояния, полного набора меню Access, встроенных панелей инструментов.
12. Закройте окно Параметры запуска. Закройте базу данных, затем повторно откройте. Откроется окно Access, содержащее только одну строку пользовательского меню Управление базой данных с категориями Формы и Отчеты. Убедитесь в правильной работе команд меню.
13. Восстановите для базы данных Академия отображение окна базы данных, полного набора меню Access, встроенных панелей инструментов. Для этого перезагрузите базу данных и при повторном открытии держите нажатой клавишу SHIFT. Выполните команду СЕРВИС/Параметры запускаи восстановите исходное состояние флажков.
Создание макросов
Задание 2.Создайте макрос для автоматического формирования экзаменационных ведомостей, рассмотренных ранее. Отдельные таблицы должны быть созданы для каждой группы студентов, имеющейся в базе данных, и для выбранной дисциплины.
Целью разработки макроса является исключение необходимости каждый раз перед созданием новой таблицы (экзаменационной ведомости) вручную переименовывать ранее созданную таблицу, чтобы предотвратить ее удаление. Макрос должен сам создавать таблицы с именами, соответствующими номерам групп и кодам дисциплин, по схеме: Ведомость NNN-K,
где NNN - номер группы, введенный в диалоговом окне, K - код дисциплины.
Для того, чтобы передать параметры создаваемых таблиц (номер группы и код дисциплины) можно, например, использовать форму, созданную на основе временной таблицы и выбирать эти параметры из первой строки этой формы.
Кроме того, для того чтобы избежать лишних остановок при выполнении макроса, поручите макросу не выводить вспомогательные служебные сообщения и сообщения-предупреждения. При выполнении макроса пользователь должен будет вводить только номер группы и код дисциплины.
При конструировании макроса можно использовать ранее созданный запрос с именем Запрос на создание экзаменационной ведомости.
Поскольку условия выполнения макрокоманд могут определяться только значениями полей или элементов управления форм и отчетов предварительно следует создать вспомогательную табличную форму на основании таблицы Ведомость 1.
Технология
1. Автоматически создайте новую табличную форму на основании таблицы Ведомость 1. Для этого в окне База данных выберите объект Формы и щелкните по кнопке Создать. В диалоговом окне Новая форма выберите способ создания - Автоформа: табличная, а в качестве источника данных - таблицу Ведомость 1. Щелкните по кнопке Ok. После появления на экране формы закройте ее и сохраните под именем Форма для макроса.
2. Для того, чтобы форма не зависела от таблицы Ведомость 1 замените имя источника записей в окне свойств формы на Ведомость 00. Для этого откройте форму в режиме конструктора и щелкните по кнопке Свойства, расположенной инструментальной панели Конструктор форм. Отредактируйте значение свойства Источник записей на вкладке Данные.
3. В окне База данных выберите объект Макросы и щелкните по кнопке Создать. Появится окно конструктора макросов. Добавьте в окне еще один столбец - Условия. Для этого выполните команду ВИД/Условия или щелкните по кнопке инструментальной панели с соответствующим названием.
4. Щелкните внутри ячейки первой строки и столбца Макрокоманда. Появится поле со списком макрокоманд. Выберите макрокоманду: УстановитьСообщения. В нижней части окна появится аргумент этой команды: Нет. Оставьте его без изменения. Введите в графу Примечание краткий комментарий: Отключение системных и предупреждающих сообщений.
5. Перейдите на следующую строку и выберите для нее макрокоманду ОткрытьЗапрос. Определите аргументы макрокоманды в нижней части окна. Раскройте список в поле Имя запроса и выберите в нем имя Запрос на создание экзаменационной ведомости. Сохраните значение аргументов Режим - таблица и Режим данных - изменение. Введите комментарий к этой макрокоманде: на создание экзаменационной ведомости. При выполнении данной макрокоманды будет создана таблица Ведомость 1.
6. После того, как запрос на создание ведомости отработал, его можно закрыть, поэтому в третьей строке выберите макрокоманду Закрыть. Определите аргументы макрокоманды: Тип объекта - Запрос, Имя объекта - Запрос на создание экзаменационной ведомости, Сохранение- Подсказка. Введите комментарий: Закрытие запроса.
7. Перед открытием созданной ранее Формы для макроса необходимо произвести копирование таблицы Ведомость1 в другую таблицу, которая и будет использована для открытия формы - Ведомость 00. Для этого выберите макрокоманду КопироватьОбъект. Определите аргументы макрокоманды: Новое имя - Ведомость 00, Тип объекта - таблица, Имя объекта - Ведомость 1. Введите комментарий: копирование таблицы Ведомость 1 в Ведомость 00.
Примечание. При определении для макрокоманды в качестве аргументов имен объектов совершенно не обязательно, чтобы соответствующие объекты существовали в базе данных в момент конструирования макроса. Важно, чтобы они были в базе данных к моменту выполнения этой макрокоманды.
8. В следующей строке выберите макрокоманду ОткрытьФорму. Определите аргументы макрокоманды: Имя формы - Форма для макроса, Режим - Форма, Режим окна - Обычное. Введите комментарий: Открыть форму на основе таблицы Ведомость 00.
9. Следующая макрокоманда должна осуществить переход на первую строку таблицы-формы для проверки значений полей N группы и Код дисциплины, введенных при выполнении запроса в диалоговые окна. Поэтому в очередной строке выберите макрокоманду НаЗапись. Выберите из списка для аргумента Запись значение Первая. Введите комментарий: Перейти на 1-ую запись табличной формы.
10. Выберите для следующей строки макрокоманду Переименовать для переименования ведомости для группы 851 и дисциплины с кодом 1. Определите аргументы макрокоманды: Новое имя - Ведомость 851_1, Тип объекта - Таблица, Старое имя - Ведомость 1. В графу Условие введите с помощью построителя для этой строки выражение :
[Формы]![Форма для макроса]![N группы]=851 And [Формы]![Форма для макроса]![Код дисциплины]=1
Введите комментарий: Переименовать Ведомость 1 в Ведомость 851_1
11. Введите следующую макрокоманду для переименования ведомости для группы 851 и дисциплины с кодом 2. Определите аргументы макрокоманды: Новое имя - Ведомость 851_2, Тип объекта - Таблица, Старое имя - Ведомость 1. Введите Условие:
[Формы]![Форма для макроса]![N группы]=851 And [Формы]![Форма для макроса]![Код дисциплины]=2
Примечание. Для ввода условий и комментариев к макрокомандам целесообразно использовать приемы копирования в буфер, а затем вставки с последующей корректировкой в окне области ввода, открываемом при нажатии сочетания клавиш SHIFT и F2.
12. Введите следующие строки макроса по аналогии с двумя предыдущими для переименования ведомости для группы 851 и дисциплины с кодом 3, а также для других групп и дисциплин. При 3-х дисциплинах должно быть 3 макрокоманды на одну группу студентов.
13. Введите последнюю макрокоманду Закрыть с аргументами: Тип объекта - Форма, Имя объекта - Форма для макроса, Сохранение - Подсказка. Окончательный вид макроса представлен на рис. 7.1
14. Сохраните макрос, щелкнув по кнопке Сохранить инструментальной панели, под именем Макрос для создания ведомостей. Запустите макрос на выполнение в пошаговом режиме. Для этого, находясь в режиме конструктора щелкните по кнопке инструментальной панели По шагам, а затем по кнопке Запуск. Проследите по шагам правильность исполнения макрокоманд. В случае неверного выполнения или аварийного завершения найдите ошибку и исправьте макрос.
Рис. 7.1. Окончательный вид макроса для создания экзаменационных ведомостей
15. После отладки макроса отключите пошаговый режим запуска, повторно щелкнув по кнопке По шагам, закройте макрос. Произведите запуск макроса из окна базы данных. Для этого в окне База данных выберите объект Макросы, выделите Макрос для создания ведомостей и щелкните по кнопке Запуск на инструментальной панели окна. Запустите макрос для формирования экзаменационных ведомостей по разным группам и дисциплинам.
Задание 3.Создайте макрос для автоматического формирования таблицы Общая ведомость. Макрос должен использовать Запрос на добавление записей в общую ведомость, который рассматривался ранее. Данные всех экзаменационных ведомостей должны добавляться в Общую ведомость за один запуск макроса. Поскольку запрос использует одну и ту же таблицу Ведомость 1, из которой записи добавляются в Общую ведомость, необходимо поручить макросу перед добавлением записи из очередной таблицы копировать все ее записи во вспомогательную таблицу Ведомость 1. При этом пользователь будет освобожден от необходимости переименовывать таблицы, как это было рассмотрено ранее.
Для того чтобы избежать лишних остановок при выполнении макроса, поручите макросу также не выводить вспомогательные служебные сообщения и сообщения-предупреждения.
Технология
1. В окне базы данных в списке объектов выберите Макросы и щелкните по кнопке Создать. Для отмены вывода промежуточных сообщений в первой строке макроса выберите макрокоманду УстановитьСообщения, сохраните аргумент - Нет, и введите комментарий: Отмена вывода промежуточных сообщений
2. Введите вторую макрокоманду - КопироватьОбъект, определите аргументы: Новое имя - Общая ведомость, Тип объекта - Таблица, Имя объекта - Ведомость 851_1. Введите комментарий: Копирование Ведомости 851_1 в Общую ведомость.
3. Введите следующую макрокоманду - КопироватьОбъект, определите аргументы: Новое имя - Ведомость 1, Тип объекта - Таблица, Имя объекта - Ведомость 851_2. Введите комментарий: Копирование Ведомости 851_2 в Ведомость 1.
4. Введите в четвертую строку макрокоманду ОткрытьЗапрос. Определите аргументы: Имя запроса - Запрос на добавление записей в Общую ведомость, Режим - Таблица, Режим данных - Изменение. Введите комментарий: Добавление записей из таблицы Ведомость 1 в Общую ведомость.
5. Выделите 3-ю и 4-ую строки макроса и скопируйте их в буфер. Щелкните мышкой в первом столбце 5-ой строки, вызовите правой кнопкой мыши контекстное меню и вставьте из буфера строки. Отредактируйте аргумент Имя объекта для 6-ой макрокоманды. Вместо имени Ведомость 851_2 введите имя Ведомость 852_1. Отредактируйте соответственно комментарий.
6. Используя вставку из буфера, введите остальные макрокоманды макроса - по две макрокоманды (КопироватьОбъект и ОткрытьЗапрос) для каждой ведомости. Отредактируйте аргумент Имя объекта для макрокоманд КопироватьОбъект.
7. Сохраните макрос, присвоив ему имя: Макрос формирования общей ведомости. Проведите отладку макроса, запуская его по шагам. После устранения ошибок отключите пошаговый режим запуска и закройте макрос. На рис. 7.2. приведен окончательный текст макроса.
Рис. 7.2. Макрос формирования Общей ведомости.
8. Запустите макрос из окна базы данных. Просмотрите таблицу Общая ведомость. Убедитесь в правильности работы макроса. Вы можете неоднократно запускать этот макрос, при этом содержание таблицы Общая ведомость останется неизменным.