Добавление подчиненной формы
Форма может отображать информацию (поля) из нескольких таблиц или запросов. Но для этого необходимо, чтобы между этими объектами существовали отношения.
В Access отношение представляет собой связь между полями с совпадающими именами двух таблиц, которая позволяет установить соответствие между записями этих таблиц. Так, например, можно связать отношением таблицы Типы и Товары, воспользовавшись установленной связью между полями КодТипа.
Каждый тип включает несколько товаров, но каждый товар может относиться только к одному типу. Это пример наиболее распространенного типа отношений, называемого один-ко-многим (то есть, одной записи в таблице Типы соответствует несколько записей в таблице Товары ).
При создании форм и запросов Access распознает отношения между базисными объектами, но не всегда правильно. Поэтому лучше установить отношения между объектами вручную, тем более что это не представляет проблемы.
В этом упражнении вы установите отношение между таблицами Типы и Товары, а затем добавите к форме Типы подчиненную форму. Подчиненная форма предназначена для просмотра товаров, принадлежащих типу, отображающемуся в главной форме. В качестве рабочей будет использоваться папка Office XP SBS\Access\Chap11\Subform. Выполните следующие шаги.
- Откройте базу данных GardenCo, расположенную в рабочей папке.
- На панели инструментов Access щелкните на кнопке Схема данных (Relationships), чтобы открыть диалоговое окно Схема данных (Relationships).
- Если диалоговое окно Добавление таблицы (Show Table) не отображается, щелкните на кнопке Отобразить таблицу (Show Table)на панели инструментов. В списке таблиц щелкните дважды на Типы и Товары. Закройте диалоговое окно Добавление таблицы (Show Table), чтобы перейти в окно Схема данных (Relationships), которое выглядит следующим образом.
- Укажите на поле КодТипа в одной таблице и перетащите его поверх поля КодТипа в другой таблице. Появится диалоговое окно Изменение связей
(Edit Relationships), позволяющее задать параметры связи, как показано
ниже.
Другие типы отношений
Помимо отношения один-ко-многим, существуют отношения один-к-одному и многие-ко-многим, но они встречаются реже.
В отношении один-к-одному каждой записи в одной таблице соответствует только одна запись в другой таблице. Этот тип отношений применяется в том случае, если таблица содержит много полей. Для удобства ее можно разбить на две связанные таблицы, поместив редко используемые поля в отдельную таблицу.
Отношение многие-ко-многим не реализовано в явном виде в Access и поэтому имитируется через третью таблицу и два отношения один-ко-многим. Например, в базе данных GardenCo имеются таблицы Товары, Заказы и Детали заказа. Таблица Товары содержит по одной записи для каждого товара. Запись таблицы Заказы описывает один заказ, не включая при этом перечня заказанных товаров. Эти данные хранятся в таблице Детали заказа. То есть, одной записи в таблице Заказы соответствует несколько записей в таблице Детали заказа. Очевидно, что между таблицами Заказы и Детали заказа существует отношение один-ко-многим. Но такое же отношение связывает таблицы Товары и Детали заказа. Таблица Детали заказа является связующей в отношении многие-ко-многим между таблицами Товары и Заказы. Проще говоря, один и тот же товар может содержаться в нескольких заказах, а каждый заказ может включать несколько товаров.
- Выделите флажок Обеспечение целостности данных (Enforce Referential
Integrity), выделите остальные два флажка и щелкните на кнопке Создать
(Create).Совет. Access использует систему правил (называемую обеспечением целостности данных), которая препятствует случайному удалению или изменению связанных данных. Если флажок Каскадное обновление связанных данных (Cascade Update Related Fields) выделен, изменение ключевого поля в первичной таблице приведет к автоматическому обновлению совпадающих ключей в связанных записях. Если выделен флажок Каскадное удаление связанных данных (Cascade Delete Related Fields), удаление записи в первичной таблице вызовет удаление соответствующих записей в связанной таблице.
На схеме данных появится линия, отображающая отношение один-ко-многим между полями КодТипа в обеих таблицах, как показано ниже.
Совет. Чтобы удалить или изменить линию связи, щелкните на ней правой кнопкой мыши и выберите подходящую команду в контекстном меню. - Закройте окно Схема данных (Relationships) и щелкните на кнопке Да (Yes) в ответ на предложение сохранить макет схемы данных.
- Откройте форму Типы в режиме конструктора.
- Увеличьте окно формы и перетащите селектор раздела Примечание формы (Form Footer) вниз на 2,5 см, чтобы расширить область данных.
- Если панель элементов отсутствует на экране, щелкните на кнопке Панель элементов (Toolbox).
- Убедитесь, что кнопка Мастера (Control Wizard)на панели элементов активна (заключена в рамку).
- На панели элементов щелкните на кнопке Подчиненная форма/отчет (Subform/Subreport)и протащите указатель по нижней части области данных, чтобы начертить прямоугольник. В форме появится белый прямоугольный объект, и откроется окно Мастер подчиненных форм (Subform Wizard).
- Оставьте выделенным вариант Имеющиеся таблицы и запросы (Use Existing Tables and Queries) и щелкните на кнопке Далее (Next).
- В списке Таблицы и запросы (Tables/Queries) выделите Таблица: Товары (Table: Товары).
- Добавьте поля ОписаниеТовара, КодТипа, Заказано, Цена и МинимальныйЗаказ в список Выделенные поля (Selected Fields), поочередно щелкая на каждом поле и
щелкая на кнопке >. Затем щелкните на кнопке Далее (Next),
чтобы перейти к третьей странице мастера.
Поскольку поле КодТипа в подчиненной форме связано с полем КодТипа в
главной форме, мастер выделит вариант Выбор из списка (Choose from a list) и
элемент списка 'Товары' для каждой записи 'Типы', поле cвязи 'КодТипа' (Show
Products for each record in Categories using CategoryID).Совет. Если мастер не знает, какие поля связаны, будет выделен вариант Самостоятельное определение (Define my own) и появятся пустые поля, где можно указать поля, которые нужно связать.
- Щелкните на кнопке Далее (Next), чтобы принять заданные по умолчанию установки, а затем щелкните на кнопке Готово (Finish), чтобы принять предложенное имя подчиненной формы и завершить процесс. Access отобразит форму Типы в режиме конструктора с вложенной в нее подчиненной формой Товары. Размеры подчиненной формы определяются исходным прямоугольником, который вы начертили.