четверг, 23 апреля 2009 г.

Создание аналитических запросов в режиме Конструктора

Задание 43. Экспортируйте из таблицы Студенты данные только о фамилиях, именах, отчествах, адресах и телефонах в документ Word и запрос Расписание в таблицу Excel вторым способом.

Задание 44. Экспортируйте в документ Word отчет по студентам любым возможным способом.
10. Макросы в Access
Макросы – это небольшие программы на языке макрокоманд системы Access. Каждая макрокоманда имеет свое имя и, возможно, один или несколько аргументов.
Макросы позволяют существенно расширить функциональные возможности созданной базы данных и настроить ее для конкретной группы пользователей. С помощью макросов можно выполнить практически все действия над объектами Access, а также можно определить реакцию базы данных на различные события в формах и отчетах (например, нажатие кнопок, изменение данных, открытие, закрытие и т.д.).
Для использования макросов не обязательно знать язык программирования, достаточно владеть основными приемами работы в MS Access. В отличие от модулей (процедур на языке Visual Basic for Application), макросы существуют отдельно от форм или отчетов, в которых они используются. Поэтому, когда макросов слишком много, их поддержка затруднительна.
10.1. Создание макросов
В MS Access имеются специальное средство для создания макросов – конструктор макросов. Открыть его можно одним из трех способов:
• нажатием кнопки Создать при открытой панели Макросы в окне базы данных;
• командой Макрос в меню Вставка;
• кнопкой Новый объект/Макрос на панели инструментов базы данных.
Окно конструктора макросов (рис. 36) аналогично окну конструктора таблиц, разделено на две части – панель описаний (верхняя часть) и панель аргументов (нижняя часть). Панель описаний состоит из нескольких столбцов. По умолчанию на экран выводятся два столбца – Макрокоманда и Примечание. Ячейки столбца Макрокоманда представляют собой поля со списком макрокоманд, из которого можно выбрать нужную. В столбце Примечание есть возможность ввести поясняющие комментарии. Когда поле Макрокоманда заполнено, в нижней части окна появляется панель аргументов, которая служит для ввода аргументов макрокоманды. Последовательность макрокоманд, записанная в окне конструктора макросов, определяет последовательность действий.
Задание 45. Создайте макрос Календарь, открывающий одноименную форму.
• Откройте конструктор макросов. Наш макрос будет состоять из одной макрокоманды – открытие формы.
• Для ввода макрокоманды можно выбрать в поле Макрокоманда из списка действие ОткрытьФорму или просто перетащить соответствующую форму из окна форм базы данных. При втором способе аргумент Имя формы заполняется автоматически, а при выборе команды из списка необходимо самостоятельно заполнить этот аргумент.
• Для того чтобы форма открывалась только для просмотра, не допуская внесения изменений, выберите соответствующее значение аргумента Режим данных.
• В строке Условие отбора можно вручную или при помощи Построителя выражений внести условие. В нашем случае условия нет.
• Запустите макрос одноименной командой из меню Запуск или кнопкой .
Задание 46. Создайте макрос СтудентыФакультета, открывающий в режиме просмотра одноименный отчет.
10.2. Создание групп макросов
Если макросов планируется достаточно много и их можно объединить в логические группы, удобно создать группы макросов (рис. 37). Для этого необходимо выполнить следующие действия.
1) Открыть конструктор макросов.
2) Добавить столбец Имя макроса через меню Вид/Имена макросов или кнопкой Имена макросов на панели инструментов базы данных.
3) В этот столбец ввести имя первого макроса.
4) В столбец Макрокоманда ввести последовательно все макрокоманды данного макроса.
5) Пропустить строку (несмотря на то, что пустые строки игнорируются при выполнении макросов, их рекомендуется использовать для удобства восприятия).
6) Повторить 3,4,5 шаги для каждого макроса группы.
Следует отметить, что для запуска одного макроса из группы используется его полное имя, то есть имя группы и через точку имя макроса. При обычном запуске из окна макросов выполняется только первый макрос группы. Запустить остальные макросы группы можно через меню Сервис/Макрос/ Выполнить макрос.
Задание 47. Создайте группу макросов ОткрытиеФорм, включающую три макроса (Студенты, Преподаватели, Дисциплины) открывающих соответствующие формы базы данных для просмотра с комментариями. Для этого:
• Отобразите столбец Имя макроса.
• Введите имя первого макроса, например, Студенты. Выберите макрокоманды для вывода сообщения и открытия соответствующей формы.
• Пропустите строку.
• Задайте имя следующего макроса, установите нужные действия.
• То же проделайте для каждого макроса группы.
• Сохраните группу макросов под именем ОткрытиеФорм.
10.4. Запуск макросов
Существует несколько способов запуска макросов. Среди них есть прямые, то есть когда макрос запускается непосредственно пользователем (именно так запускались созданные ранее макросы). Эти способы используются обычно для тестирования и отладки макросов. Когда макрос отлажен, создают специальную команду меню, кнопку или связывают макрос с некоторым событием в форме или отчете.
Рассмотрим возможные способы запуска макроса.
1. Через меню Сервис/Макрос/Выполнить макрос.
2. Из окна конструктора макроса меню Запуск или кнопками Запуск или По шагам.
3. Из окна макросов в окне базы данных (двойным щелчком по имени макроса или кнопкой Запустить).
(Перечисленные выше способы относятся к прямым способам запуска макросов.)
4. С помощью кнопок на панелях команд (панели инструментов, меню, контекстные меню).
5. С помощью комбинации клавиш.
6. Запуск макроса при открытии базы данных.
7. Назначение макроса событию.
Запуск макроса с помощью кнопок на панелях команд
Для запуска макросов бывает удобно создать специальную панель:
• Открыть окно макросов и выделить нужный макрос.
• В меню Сервис/Макрос выбрать одну из команд: Создать панель инструментов из макроса, Создать меню из макроса или Создать контекстное меню из макроса. После чего на экране появится панель команд выбранного вида.
• Для перехода в режим настройки объекта необходимо выбрать команду Настройка в меню Сервис или одноименную команду в контекстном меню панели инструментов.
• Далее на вкладке Команды выбрав категорию Все макросы (рис. 38) можно увидеть все созданные макросы и при помощи мыши перетащить нужные макросы на панель инструментов.
• Для изменения кнопок на панели инструментов можно воспользоваться кнопкой Изменить выделенный объект.


Задание 48. Создайте панель инструментов, поместив на нее все созданные макросы. Для макросов группы ОткрытиеФорм измените вид значков (рис. 39), выбрав рисунки из имеющихся и добавьте подпись. Для остальных макросов создайте свои собственные рисунки и всплывающие подсказки.
Запуск макроса при открытии базы данных
При открытии базы данных могут выполняться некоторые действия. Чаще всего, это открытие Главной кнопочной формы, вывод специальных меню и панелей инструментов. Для определения этих действий используется диалоговое окно Параметры запуска (меню Сервис/Параметры запуска).
Но иногда при запуске нужно выполнить более сложный набор действий, для чего и используют специальный макрос AutoExec. При открытии базы данных сначала выполняются действия, определенные в окне Параметры запуска, затем Access проверяет наличие макроса AutoExec и, если он есть, выполняет его.

Задание 49. Создайте макрос AutoExec, в котором обеспечьте вывод информационного окна с приветствием при открытии базы данных.
10.5. Назначение макроса событию
Наиболее часто макросы в Access используются для обработки событий. Событие – это любое действие, распознаваемое объектом. Событие происходит в результате действий пользователя, выполнения инструкций VBA или генерируются системой. Примеры событий: открытие формы, отчета, ввод данных в поле, выбор элемента списка, щелчок по экранной кнопке и т.д. Можно определить реакцию объекта на некоторое событие с помощью макросов.
В макросах, назначаемых событию, часто используются ссылки на формы, отчеты, их элементы управления и свойства. Такие ссылки имеют определенную форму:
ИмяСемейства ! ИмяОбъекта
ИмяСемейства ! ИмяОбъекта . ИмяСвойства
ИмяСемейства ! ИмяОбъекта ! ИмяЭлемента
ИмяСемейства ! ИмяОбъекта ! ИмяЭлемента . ИмяСвойства,
где ИмяСемейства – это формы (Forms) или отчеты (Reports);
ИмяОбъекта – имя формы или отчета;
ИмяЭлемента – имя элемента управления (поля, кнопки и т.п.);
ИмяСвойства – имя свойства объекта или элемента (вывод на экран, доступ и т.п.).
Если в именах встречаются пробелы – их необходимо заключать в квадратные скобки.
Например: Reports! ЛичнаяКарточка! [Номер Зачетной Книжки]
Forms! Студенты . Visible (свойство Visible определяет, будет ли форма видна на экране)
Forms! Подгруппы! КодПодгруппы.Enabled (свойство Enabled позволяет запретить или разрешить доступ к элементу)

На примерах рассмотрим некоторые возможности присвоения макросов событиям.
Задание 50. В форме Занятия реализуйте возможность фильтрации по коду дисциплины.
• Создайте новую форму СписокЗанятий по таблице Занятия с помощью мастера ленточных автоформ (чтобы весь список занятий выводился на экран).
• Откройте форму СписокЗанятий в режиме конструктора и приготовьте свободное место в области заголовка формы.
• Отключите мастеров на панели элементов.
• В область заголовка формы добавьте свободное поле со списком для определения критерия фильтрации. В свойствах подписи этого поля задайте значение «Выбор дисциплины» для свойств Имя и Подпись. В свойствах самого поля задайте значение свойства Имя - «ВыбраннаяДисциплина» (для удобства последующего обращения к этому объекту), значение свойства Тип источника строк – «Таблица или запрос», значение свойства Источник строк – Дисциплины (это имя таблицы, из которой будут браться значения списка).
• В режиме просмотра формы проверьте правильность генерирования списка дисциплин.
• В область заголовка формы добавьте кнопку для запуска фильтра. В свойствах кнопки задайте значение «Применить фильтр» свойствам Имя и Подпись, на вкладке События в свойстве Нажатие кнопки нужно задать имя макроса. Пока подходящий макрос не создан, так что вызовите построитель макросов. Создайте группу макросов Фильтрация, так как для выполнения данного задания одного макроса не достаточно. Первый макрос группы назовите, например, ПрименениеФильтра. В нем будет единственная макрокоманда ПрименитьФильтр, в качестве значения ее аргумента Условие отбора постройте выражение:
[Занятия]![Дисциплина] Like ([Forms]![СписокЗанятий]![ВыбраннаяДисциплина])
То есть из таблицы Занятия будут отобраны только те записи, значение поля Дисциплина в которых равно значению элемента управления ВыбраннаяДисциплина в форме СписокЗанятий.
• Сохраните изменения и проверьте действия макроса. Заметьте, что если оставить поле ВыбраннаяДисциплина незаполненным, то применяется пустой фильтр. В столбце Условие определите параметры выполнения команды: Not IsNull([Forms]![СписокЗанятий]![ВыбраннаяДисциплина])
• Дополните макрос командой Сообщение, которое будет выводиться, если поле ВыбраннаяДисциплина не заполнено.

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

Условие Макрокоманда
Not IsNull([Forms]![Студенты]![КодПоиска]) КЭлементуУправления
… НайтиЗапись
Аргументу Имя элемента макрокоманды КЭлементуУправления присвойте значение [НомерЗачетнойКнижки]. Эта команда переведет фокус на поле НомерЗачетнойКнижки формы Студенты, чтобы затем производить поиск по этому полю.
Аргументу Образец поиска макрокоманды НайтиЗапись присвойте значение =[Forms]![Студенты]![КодПоиска]. Значения остальных аргументов можно оставить стандартными. Эта команда будет искать запись, для которой значение поля НомерЗачетнойКнижки совпадает со значением в поле КодПоиска.
• Закройте конструктор макросов, сохранив изменения. Проверьте действие кнопки в режиме просмотра формы.

Задание 52. В форме Подгруппы предусмотрите возможность скрытия и отображения подчиненной формы Студенты.
• Для этого используем группу переключателей: без помощи мастера добавьте на форму в режиме конструктора сначала группу переключателей, а затем в эту группу – два переключателя, свойствам надписей которых задайте значения «Отобразить» и «Скрыть» соответственно.
• Создайте группу макросов ПодчиненнаяФорма.
• Первый макрос назовите, например, Отобразить и определите команду ЗадатьЗначение со следующим условием и аргументами:
Условие Макрокоманда
[Forms]![Подгруппы]![Студенты подчиненная форма].[Visible]=Ложь ЗадатьЗначение
Аргумент Элемент: [Forms]![Подгруппы]![Студенты подчиненная форма].[Visible]; аргумент Выражение: Истина (Свойство Visible означает вывод элемента на экран).
• Для второго переключателя макрос будет содержать противоположные условие и команду.
• Для события ПолучениеФокуса переключателей формы задайте соответствующие макросы и проверьте их действие в режиме просмотра формы.
11. Создание и изменение панелей команд
Управление работой с базой данных осуществляется с помощью командного интерфейса, содержащего набор команд, организованный в форме системы различных меню. В MS Word и MS Excel пользователь, не прибегая к программированию, может создать только свою панель инструментов. В MS Access есть возможность создания панелей команд трех типов:
• строка меню;
• панель инструментов;
• контекстное меню.
11.1. Создание и изменение строки меню
Строка меню содержит элементы – названия команд или групп команд, как правило, включающие по одной подчеркнутой букве, определяющей клавиши доступа. Выбрать элемент можно щелчком мыши или нажатием комбинации клавиш ALT и подчеркнутой в названии буквы. При выборе команды сразу происходит ее выполнение, при выборе группы команд открывается подменю.
Строка меню создается через окно Настройка (вызывается через меню Сервис/Настройка или из контекстного меню панели инструментов). В этом окне необходимо выполнить следующие действия:
• Открыть вкладку Панели инструментов.
• Кнопкой Создать открыть окно Создание панели инструментов и ввести имя новой строки меню (запрашивается как имя панели инструментов), ОК.
• На экране появится маленькая пустая панель инструментов. Чтобы преобразовать ее в строку меню, нужно изменить ее тип. Для этого: выделить название новой панели в списке на вкладке Панели инструментов (оно обычно добавляется в конец списка) и кнопкой Свойства открыть окно Свойства панели инструментов (рис. 41).
• В раскрывающемся списке тип выбрать значение «Строка меню». Кроме этого свойства в окне можно определить и другие:
закрепление – можно разрешить различные виды расположения панели;
отображение в меню – при установке этого флажка название новой панели отобразится в списке команд Вид/Панели инструментов;
настройка – сброс этого флажка запретит изменение данной панели команд;
изменение размера – сброс этого флажка запретит менять размеры данной панели команд;
перемещение – сброс этого флажка запретит перемещения данной панели команд;
отображение и скрытие – сброс этого флажка запретит возможность скрывать и снова показывать панель на экране.
• Созданная вами строка меню пока пустая. Для добавления в нее элементов нужно перейти на вкладку Команды в диалоговом окне Настройка.
• Далее в качестве элементов строки меню нужно поместить названия групп команд (подменю) или сразу команды: если будет подменю, то в списке Категории нужно выделить значение «Новое меню»; затем перетащить элемент Новое меню из списка Команды на новую панель (рис. 42); далее определить его свойства в окне Свойства элемента (вызывается из контекстного меню элемента Новое меню):
подпись – название пункта меню;
всплывающее сообщение – можно ввести текст всплывающей подсказки;
действие – обычно определяет действие, выполняемое при выборе данного элемента, по умолчанию – открывает список команд;
файл справки и идентификатор справки позволяют связать с данным элементом раздел из справочной системы базы данных;
параметр – связано с полем действие и определяет значение аргумента функции, если в поле действие определен вызов функции;
дополнительные сведения могут содержать информацию, которая будет доступна из процедуры VBA;
создать группу – установление этого флажка означает, что данный элемент панели команд является началом группы элементов.
• Далее внести в созданное подменю (или сразу на строку меню) команды через ту же вкладку Команды окна Настройка: выбрать категорию, затем команду этой категории и перетащить ее в подменю (или на строку меню) (рис. 43).
• Для каждой команды, добавленной на строку меню, можно поменять или вообще убрать ее значок через контекстное меню этой команды.

Чтобы окончательно придать строке меню профессиональный вид, нужно каждому элементу назначить клавиши доступа. Буквы, соответствующие этим клавишам, выделяются в названии элемента подчеркиванием (подчеркнутые буквы можно нажать на клавиатуре вместе с клавишей Alt для выбора элемента меню). Чтобы указать букву, которая будет определять клавишу доступа, нужно перед ней в названии элемента меню (через его свойства или контекстное меню) вставить знак «&». Например, «&Студенты». Тогда буква «С» в этом названии будет подчеркнута, и открыть этот пункт можно будет нажатием сочетания клавиш Alt+С. В разных элементах одной строки меню или подменю должны быть использованы разные буквы, но в разных подменю – могут совпадать.
Осталось отметить, что для удаления элементов строки меню достаточно при открытом окне Настройка перетащить их на пустое место окна Access, а для удаления всей строки меню – выбрать ее в списке на вкладке Панели инструментов окна свойств и воспользоваться кнопкой Удалить в этом же окне.
Задание 53. Создайте строку меню Факультет, содержащую команды вызова основных объектов базы данных ФАКУЛЬТЕТ (таблицы, формы, запросы, отчеты), объединенные по категориям (подменю): Студенты, Преподаватели, Дисциплины.

Задание 54. В подменю Студенты добавьте подменю Подгруппы, из которого можно обратиться к таблицам, формам, запросам и отчетам, связанным с подгруппами.

11.2. Создание и изменение панели инструментов
Создание и изменение панели инструментов совершенно аналогично созданию строки меню. Только на панели инструментов для команд (кнопок) используются стандартные значки. Также можно добавлять или удалять команды из существующих панелей инструментов.
Задание 55. Создайте свою панель инструментов, назвав ее «Панель пользователя» и поместив на нее кнопки команд, которыми вы чаще всего пользуетесь (чтобы можно было скрыть стандартную панель инструментов и оставить вашу).
11.3. Создание и изменение контекстных меню
Создание контекстного меню также во многом аналогично созданию строки меню. Однако есть три основных отличия.
1) В окне Свойства панели инструментов в открывающемся списке тип нужно выбрать значение «Контекстное меню» (вместо «Строка меню»). При этом выводится предупреждение, что данное контекстное меню исчезнет с экрана. Чтобы просмотреть или изменить его, нужно на вкладке Панели инструментов в списке Панели инструментов отметить значение «Контекстные меню». Тогда на экране появится панель контекстных меню. Создаваемые пользователем меню отображаются в пункте Настраиваемый (рис. 44).
2) Контекстное меню нужно связать с каким-либо объектом базы данных (с формой или отчетом). Для этого нужно вызвать окно свойств объекта (формы или отчета), открытого в режиме просмотра или конструктора (это можно сделать из контекстного меню, вызванного на полосе заголовка, или соответствующей кнопкой панели инструментов). На вкладке Другие окна свойств имеется свойство Контекстное меню (в режиме просмотра) или даже два свойства Контекстные меню и Контекстное меню (в режиме конструктора) (рис. 45). Свойство Контекстные меню разрешает или запрещает вообще вывод на экран контекстного меню этого элемента, а в свойстве Контекстное меню можно выбрать из открывающегося списка одно из созданных пользователем контекстных меню. По умолчанию – выводится стандартное контекстное меню элемента.
3) Если для удаления строки меню достаточно воспользоваться кнопкой Удалить в окне настройки на вкладке Панели инструментов, то удалить контекстное меню таким образом нельзя, так как его нет в списке. Для удаления сначала нужно преобразовать его в обычную панель инструментов: в этом же окне настройки на вкладке Панели инструментов кнопкой Свойства вызвать окно свойств, затем в списке Выбранная панель выбрать удаляемое контекстное меню и в списке тип изменить его тип на «Панель инструментов». Тогда бывшее контекстное меню появится в списке панелей инструментов и его можно удалить кнопкой Удалить.
Задание 56. Создайте контекстное меню для формы Студенты, включающее команды открытия таблиц Студенты, Подгруппы, а также другие команды на Ваше усмотрение. Прикрепите это же контекстное меню к отчету по студентам.
12. Главная кнопочная форма
В Access существует надстройка, которая позволяет создать своеобразный путеводитель по объектам базы данных - кнопочную форму. Когда форм и отчетов становится слишком много, полезно иметь систему указателей, которая позволит ориентироваться среди множества объектов. Главная кнопочная форма (рис. 46) может иметь иерархическую структуру и содержит кнопки, позволяющие выбирать основные объекты или функции.
Эту форму можно создать с помощью конструктора форм, а можно использовать специальный мастер – Диспетчер кнопочных форм (меню Сервис/Служебные программы/Диспетчер кнопочных форм).

Задание 57. Создайте Главную кнопочную форму вашей базы данных Факультет, состоящую из четырех страниц (Главная, Студенты, Преподаватели, Дисциплины, причем три последние подчинены первой).
То есть, структуру такой кнопочной формы схематично можно представить так:
Создание кнопочной формы и страниц кнопочной формы
При запуске Диспетчера кнопочных форм, если таких форм еще нет, выдается диалоговое окно, запрашивающее, нужно ли создать кнопочную форму. В случае утвердительного ответа мастером создается таблица Swichboard Items (Элементы кнопочной формы) и сама кнопочная форма (Swichboard) и открывается диалоговое окно Диспетчера кнопочных форм (рис. 47).
В этом окне перечисляются все страницы кнопочной формы. Пока создана только одна страница, которая по умолчанию называется Mаin Swichboard (рис. 47).
Для того, чтобы переименовать страницу, нажмите кнопку Изменить. В поле Название кнопочной формы можно ввести новое имя страницы (рис. 47). (Переименуйте страницу в Главную, нажмите кнопку Закрыть).
Примечание. При работе с диспетчером кнопочных форм обращайте внимание на заголовки открываемых диалоговых окон!
Для создания новых страниц используйте кнопку Создать. При этом открывается окно Создание (рис. 48). (Создайте три новые страницы – Студенты, Преподаватели, Дисциплины).

Создание элементов (кнопок) на странице кнопочной формы
Новые страницы пока не содержат никаких элементов. Для создания кнопок на нужной странице выделите ее и нажмите кнопку Изменить. Откроется окно Изменение страницы кнопочной формы.
Чтобы создать элемент, используйте кнопку Создать. Откроется диалоговое окно Изменение элемента кнопочной формы (рис. 49).
Здесь в поле Текст вводится название элемента (то, что мы увидим на форме), в поле Команда выбирается из списка действие, которое будет выполняться при нажатии этой кнопки, в поле Кнопочная форма вводится (или выбирается из списка) имя объекта, с которым будет произведено действие. Количество кнопок на одной странице ограничено восьмью.
Кроме того, что элементы можно добавлять, изменять и удалять, можно также менять их последовательность кнопками Вниз и Вверх.
На странице Главная создайте кнопки обращения к трем другим страницам кнопочной формы и кнопку выхода из приложения. На странице Студенты создайте кнопки, открывающие формы, связанные со студентами, и кнопку возврата на Главную страницу. Аналогично поступите со страницами Преподаватели и Дисциплины.
Оформление кнопочной формы
Внешний вид Главной кнопочной формы оформлен по умолчанию. Но можно изменить его в режиме конструктора (изменить цвет, вставить картинки и т. п.). В окне базы данных на странице Формы присутствует созданная вами главная кнопочная форма под именем Swichboard. Имя можно оставить таким или переименовать. В режиме конструктора эта форма выглядит пустой, но если посмотреть свойства формы, то можно обнаружить команды.
Для того чтобы при открытии базы данных открывалась Главная кнопочная форма, в меню Сервис выберите команду Параметры запуска. В поле Вывод формы/страницы выберите нужную форму.
Задание 58. Оформите Главную кнопочную форму по Вашему усмотрению, добавьте надписи, вставьте картинки (Не удаляйте кнопки этой формы в режиме конструктора!)

Задание 59. Сделайте стартовой Главную кнопочную форму.