Введение в microsoft access (835789), страница 7
Текст из файла (страница 7)
1 на с. 7 и обратимся к правой части рисунка. Нам предстоит создать триформы, аналогичные созданным ранее: «Преподаватели»(рис.70), «Список преподавателей» (рис.иск преподавателя» (рис.72а).71) и«По-Но на этот раз чита-телю предоставляется возможность выполнить эту работу самостоятельно.
Если вы тщательно проработали материал предыдущих параграфов, это не должно вызватьбольших затруднений. В конце работы протестируйте созданный вами фрагмент приложения. Например, проверим работу формы «Поиск преподавателя». Для этого откроем форму и в поле «ФИО» введем «ло» (рис.72а).После нажатия кнопки «Поиск» откроется форма «Список преподавателей» с набором всех записей, поле «ФИО»которых содержит подстроку «ло» (рис.72б).
Проверьте§ 2.5. Формы «для преподавателей»Рис. 70.Рис. 71.Форма «Преподаватели»Форма «Список преподавателей»7576ГЛАВА 2. ФОРМЫ И МАКРОСЫРис. 72.Поиск преподавателятакже, открывается ли форма с подробной информациейо преподавателе при двойном щелчке по полю «ФИО».§ 2.6. Формы «для кружков»74⇔80Снова обратимся к рис. 1 на с. 7. Разумеется,рисунок не есть концептуальная модель, но он напоминает нам, куда и зачем мы идем.
Настало время занятьсяцентральным понятием в нашей работе – кружками, т. е.тем, что изображено в центре рисунка. Точно так же, каки прежде, создадим «форму в столбец» (рис. 73), котораясодержит подробную информацию о каждом кружке. Затем ленточную форму «Список кружков» (рис. 74). Разумеется, со всеми кнопками и всем тем набором возможностей,которыемыранееустанавливалидля§ 2.6. Формы «для кружков»Рис. 73.Рис. 74.Форма «Кружки»Форма «Список кружков»7778ГЛАВА 2. ФОРМЫ И МАКРОСЫаналогичных форм.
Проверим формы в работе. На данный момент у нас имеется три «изолированных» фрагмента приложения. Вернемся к форме «Кружки». Теперь,когда мы освоили «внедренные макросы», т.е. макросы,приписанные к отдельным элементам управления, у насможет появиться желание сделать так, чтобы из формыс подробной информацией о кружке можно было по двойному щелчку по полю «Преподаватель» получить информацию о преподавателе. Для этого в режиме конструкторав форме «Кружки» откроем окно свойств поля «Преподаватель». Выберем вкладку «События» и поставим в соответствие событию «Двойное нажатие кнопки» внедренныймакрос.
Для этого щелкнем по кнопке «· · ·», в окне «Каталог макросов» выберем «Объекты базы данных», а затем«Открыть форму». На экране появится окно параметровмакрокоманды (рис.75).Заполним окно, как показанона рис. 75. В строке «Имя формы» укажем «Преподаватели», т. е. зададим имя той формы, которую мы хотимоткрыть. В строке «Условия отбора» задаем условия, покоторым отбираются записи из указанной формы:[ID_преподаватель]=[Формы]![Кружки]![Преподаватель].Напомним, что в поле «Преподаватель» формы «Кружки»на самом деле хранится код преподавателя, но мастер подстановок вместо кода показывает соответствующий ему§ 2.6. Формы «для кружков»Рис. 75.79Параметры макрокомандыРис.
76.Поиск кружкатекст. Осталось закрыть конструктор с сохранением результатов корректировок. Откроем форму в рабочем режимеипроверимееработу.Поаналогиис формами «Поиск ученика» и «Поиск преподавателя» создадим форму «Поиск кружка» (см. рис.76). Заметим,что пока в наших формах никоим образом не отраженасвязь между сущностями «Кружки» и «Ученики». Этойсвязью нам и предстоит заняться в дальнейшем.80ГЛАВА 2.
ФОРМЫ И МАКРОСЫ§ 2.7. Подчиненные формы76⇔89Ранее мы заметили, что связь между таблица-ми «Кружки» и «Ученики» имеет более сложный характер, чем между таблицами «Кружки» и «Преподаватели».Для задания этой связи мы в § 1.5 на с. 30 создали таблицу «Ученик_кружок». Теперь в процессе диалога с мастером построим соответствующую форму. Выберем таблицу «Ученик_кружок» и только одно ее поле «Ученик»(рис.77). «Далее».
Вид формы «ленточный» (рис.Рис. 77.78).Выбор таблицы и полей«Далее». Сохраним форму под тем же именем, что и соответствующую таблицу (рис. 79). «Готово». На экране появится новая форма (рис. 80). В ней пока мы видим толькоодну запись, поскольку только одну и заполнили (рис. 26на с. 34).
Отредактируем форму «Ученик_кружок» в режиме конструктора (рис.81а). Добавим в ее примеча-ние только одну кнопку «Сохранить», которая отвечает§ 2.7. Подчиненные формыРис. 78.Рис. 79.81Выбор типа формыВвод имени формыза сохранение новой записи. В рабочем режиме форма будет иметь вид, как на рис.81б. Форма имеет единствен-ное поле «Ученик». У читателя может возникнуть вопрос:нельзя ли снова сделать так, чтобы по двойному щелчкупо этому полю открывалась форма с подробной информацией об ученике? Попробуем. В окне свойств поля «Ученик» выберем вкладку «События» (рис.82). Установим82ГЛАВА 2. ФОРМЫ И МАКРОСЫРис. 80.Рис. 81.Форма «Ученик_кружок»Форма «Ученик_кружок» после редактированияРис.
82.Свойства поля «Ученик»указатель на строке «Двойное нажатие кнопки». Щелкнем по значку «· · ·». Откроется «Построитель» (рис.83).§ 2.7. Подчиненные формыВыберемстроку«Макросы».Рис. 83.83Мыхотимреализовать«Построитель»метод, связанный с событием «Двойное нажатие кнопки».В окне «Каталог макрокоманд» выберем «Объекты базыданных»,азатем«ОткрытьРис. 84.форму»Каталог макрокоманд(рис.84).84ГЛАВА 2. ФОРМЫ И МАКРОСЫЗададим параметры макрокоманды «Открыть форму». Прежде всего, это имя формы, которую мы хотим открыть:«Ученики» (рис.85).
«Условие отбора»:Рис. 85.Параметры макрокомандыID_ученик=Формы![Ученик_кружок]![Ученик].Закроем конструктор с сохранением результатов. Откроемформу в рабочем режиме и убедимся, что двойной щелчок по полю «Ученик» вызывает форму «Ученики». Откроем в режиме конструктора форму «Кружки». Зацепимуказателем нижний правый ее угол и расширим прямоугольник формы. В свободное пространство в правой части формы мы собираемся поместить элемент управления,который называется «Подчиненная форма». Возьмем егос панели элементов (рис. 86) так же, как мы брали кнопки§ 2.7. Подчиненные формы85и т. д. На экране появится первое диалоговое окно (рис. 87).Рис. 86.Панель элементовВ этом окне выберем форму, которую хотим разместитьРис. 87.Выбор формыв области данных формы «Кружки».
Это форма «Ученик_кружок». В следующем окне выберем поле связи«ID_ученик» (рис.88). Осталось дать новому элемен-ту управления имя «Ученик_кружок». Это имя совпадаетсименемизвестнойнамформы.Посмотрим,что86ГЛАВА 2. ФОРМЫ И МАКРОСЫРис. 88.Выбор поля связиполучилось. В области формы «Кружки» появилась форма «Ученик_кружок» (рис.Рис. 89.89). Не следует думать, чтоПодчиненная форма в режиме конструктораэлемент управления и одноименная подчиненная формасуть одно и то же.
Элемент управления здесь выступаетв качестве механизма, который обеспечивает связь форм.§ 2.7. Подчиненные формы87Закроем конструктор с сохраниением результатов и протестируем приложение. Откроем форму «Список кружков».Дважды щелкнем в этом списке по названию кружка «Вышивание». Откроется форма «Кружки» (рис.Рис. 90.90). ВродеПодчиненная форма в рабочем режимевсе неплохо. Как и прежде, если сделать двойной щелчокпо полю «Преподаватель», откроется форма с подробнойинформацией о преподавателе.
Но вот беда: если теперьмы сделаем двойной щелчок по полю с фамилией и именем интересующего нас ученика, на экране появится диалоговое окно с просьбой ввести его код. Система не определила этот код. Дело в том, что, когда форма становится подчиненной, она частично теряет свой «суверенитет».Теперь нам понадобится внести исправления в «Условиеотбора». Чтобы обратиться к полю «Ученик», мы должнысослаться на «вышестоящую инстанцию». Откроем в режиме конструктора окно «Кружки», выйдем на свойства88ГЛАВА 2.
ФОРМЫ И МАКРОСЫполя «Ученик» и т.д., пока не увидим окно парамет-ров макрокоманды (рис.Рис. 91.91). Внесем изменения в строкуПараметры макрокоманды«Условия отбора». Теперь строка должна выглядеть так:[ID_ученик]=[Формы]![Кружки]![Ученик_кружок].[Form]![Ученик]После знака равенства сначала мы ссылаемся на элементуправления: [Формы]![Кружки]![Ученик_кружок]. Затем,после «точки», указываем интересующее нас поле в этомэлементе управления. Следует запомнить, что здесь следует писать не [Форма], а [Form].
Не потому, что в этом кроетсякакой-тоглубокийне будет работать.смысл,апотому,чтоиначеГлава 3. Кнопочная форма§ 3.1. Диспетчер кнопочных форм80⇔93Далее мы могли бы заняться созданием другихфрагментов приложения, но не будем злоупотреблять терпением читателя. Он имеет право наконец увидеть нечтоцелое, объединяющее все созданные ранее объекты базыданных.
Для этой цели задействуем «Диспетчер кнопочных форм». В окне Access 10 вы можете не найти соответствующей пиктограммы, поскольку в этой версии имеются и другие средства навигации. Некоторые думают, чтоэтого диспетчера здесь и вовсе нет. Однако пиктограмму «Диспетчер кнопочных форм» надо просто предварительно установить на панели быстрого доступа. Для этоговыберем пункт верхнего горизонтального меню «Файл».В развернувшемся вертикальном меню щелкнем по строке «Параметры».