Отображение связанных записей в отдельной форме

 

В главе 13 вы узнали, как элемент управления Подчиненная форма может отображать связанные записи в одном месте. Но подчиненные формы не всегда предоставляют достаточно места для работы. В зависимости от способа обработки и величины объема реальной информации, с которой вы сталкиваетесь, возможно, вы предпочтете отображать подчиненные записи в другом месте. Можно добавить на форму кнопку, которая раскрывает другую форму со связанными записями. Для реализации этого метода во второй форме применяется фильтрация для отображения только подчиненных записей. На рис. 14.19 и 14.20 показан пример из БД Cacophone Studios.

Формы, представленные на рис. 14.19 и 14.20, можно создать без особых усилий. Немного сложнее обстоит дело с кнопкой See Students in this Class.

Далее перечислено все, что нужно сделать, для реализации кнопки, открывающей вторую форму для отображения связанных записей.

1.    Откройте родительскую форму.

В данном случае начните с формы Classes.

2.    На вкладке ленты Конструктор щелкните кнопкой мыши пиктограмму Кнопка. Нарисуйте кнопку на вашей форме.

Запустится Мастер кнопок.

3.    Выберите категорию Работа с формой и действие Открыть форму и щелкните мышью
кнопку Далее.

На следующем этапе мастер отобразит все формы в вашей БД.

 

Рис. 14.19. Форма Classes выводит на экран список классов. Щелкните мышью кнопку See Students in this Class (просмотреть список студентов этого класса) для открытия второй формы (рис. 14.20)

Рис. 14.20. Форма StudentEnrollments (список студентов) содержит студентов только одного класса

 

4.   Выберите подчиненную форму, в которой есть связанные записи, и затем щелкните
мышью кнопку Далее.

В данном случае выберите форму StudentEnroIlments.

5.   Выберите переключатель Открыть форму и показать все записи и затем щелкните
мышью кнопку Далее.

Этот пункт кажется немного странным — разве вы не собирались отображать только связанные записи из таблицы StudentEnrollments? Конечно, да. Но, к сожалению, Мастер кнопок не может помочь — в этой области у него существенная ошибка, мешающая создать правильное условие отбора. Поэтому вам придется проделать немного больше работы, определив самостоятельно условие отбора записей.

6.    Введите какой-нибудь текст и выберите рисунок.

Начиная с этой точки, Мастер кнопок отображает стандартные этапы, которые вам уже известны (см.разд. "Выполнение действий с помощью кнопок" главы 13).

7.    Задайте имя кнопки и щелкните мышью кнопку Готово.

Теперь у вас есть кнопка, открывающая нужную форму, но не задана фильтрация. Для этого необходимо изменить макрос, который использует данная кнопка.

 

 

Примечание

Макрос — это список действий, которые вы хотите заставить выполнить программу Access. В следующей главе будут подробно рассмотрены макросы. А сейчас у вас достаточно знаний для создания нужной вам кнопки.

 

 

8. Если на экране нет Окна свойств, выберите на ленте Инструменты конструктора форм | Конструктор > Сервис > Страница свойств (Form Design Tools | Design > Tools > Property Sheet).

9. Выделите кнопку, щелкнув ее мышью на рабочей поверхности формы.
Ее также можно выбрать из списка в верхней части Окна свойств.

10.   В Окне свойств выберите вкладку События и щелкните кнопкой мыши поле Нажатие кнопки (OnClick).

Вы увидите в нем текст [Внедренный макрос], свидетельствующий о том, что к данному событию присоединен макрос.

11.   Щелкните мышью кнопку с многоточием для открытия окна редактирования макроса.

Появится новая вкладка, на которой перечислены по порядку все макрокоманды, выполняемые макросом. Вы познакомитесь с этим окном в главе 15. Сейчас нужно внести только два простых изменения.

12.   В начале списка вы увидите макрокоманду ОткрытьФорму. (Она открывает подчиненную форму при щелчке мышью кнопки.) Выделите ее, щелкнув кнопкой мыши (рис. 14.21).

Когда в макросе выбрана макрокоманда, в разделе Аргументы макрокоманды, расположенном в нижней части окна, появляется набор сведений о ней.

13.   Щелкните кнопкой мыши поле Условие отбора (в нижней части окна, в разделе Аргументы макрокоманды) и затем введите ваше выражение для фильтрации записей.

Это условие отбора должно выбрать связанные записи. В данном примере это означает, что вас интересуют записи, у которых текущий код класса.

 

 

Далее приведено нужное вам условие отбора:

[ClassID]=[Forms]![Classes]![ID]

 

Рис. 14.21. Выражение для фильтрации следует поместить в поле Условие отбора

 

Это выражение сообщает программе Access о том, что необходимо отображать запись, только если значение поля ClassID в форме StudentEnrollments совпадает со значением поля ID в форме Classes. Другими словами, вы получите список студентов, зачисленных в текущий класс.

 

 

Примечание

Странные восклицательные знаки в выражении для фильтрации позволяют связать две формы. Условие отбора задается в форме, которую вы открываете (форма StudentEnrollments) и у которой есть поле ClassID. Но вы должны сократить число отображаемых ею записей на основе поля ID, хранящегося в другой форме (Classes). Синтаксическая запись [Forms] ! [Classes] ! [ID] — просто замысловатый способ сказать программе Access о том, что искать нужное ей значение ID следует в открытой в данный момент форме с именем Classes.

 

 

14. Изменение, сделанное в предыдущем пункте, почти завершает корректировку макроса, Но хорошо бы добавить еще одну макрокоманду. Щелкните кнопкой мыши поле, расположенное под макрокомандой ОткрытьФорму, и введите Обновление (Requery) (рис. 14.22).

 

Данная команда заставляет программу Access обновить текущую форму (форму StudentEnrollments, которую вы только что открыли). Этот шаг необходим, поскольку форма StudentEnrollments могла быть уже открыта, когда вы щелкнули мышью кнопку See Students in this Class. Если так и было, в вашем макросе изменился фильтр, но он не выполнил фильтрацию. Для обновления отображаемых записей необходимо выполнить команду Обновление и заставить форму обновить саму себя.

Рис. 14.22. Макрокоманда Обновление обновляет отображение текущей формы. Ей не нужны никакие дополнительные данные

 

 

15. Теперь работа завершена. Закройте вкладку с макросом и щелкните мышью кнопку Да в ответ на предложение программы Access сохранить макрос.

У вас появилась замечательная кнопка перехода, которая отображает связанную форму и ограничивает ее лишь теми записями, которые вас интересуют. В следующей главе вы узнаете гораздо больше о тонкой настройке макросов.

Для испытания вашей кнопки перейдите в Режим формы и щелкните кнопку мышью. Когда вы щелкните мышью кнопку See Students in this Class и откроется форма StudentEnrollments, сработает заданное условие отбора записей.

 

 

Подсказка

Любой пользователь может удалить ваше условие отбора с помощью группы ленты Главная > Сортировка и фильтр (или щелкнув мышью поле С фильтром (Filtered), которая выводится в нижней части формы, рядом с кнопками перехода). Если вам не нужна такая гибкость настройки, можно настроить форму StudentEnroIIments так, что она никому не позволит изменять свои параметры фильтрации. Для этого откройте форму в режиме Конструктора, выделите элемент Форма в списке Окна свойств и измените значение свойства Применение фильтров с Да на Нет.

 

 

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100