При работе с реляционными данными в Access часто требуется просмотреть несколько таблиц или запросов в одной форме. Например, может потребоваться одновременно просмотреть данные о клиентах из одной таблицы и сведения о заказе клиентов из другой таблицы. Вложенные формы упрощают эту задачу, а Access предоставляет несколько быстрых способов их создания.
В этой статье
- Сведения о подчиненных формах
- Создание или добавление подчиненной формы
- Создание формы, содержащей подчиненную форму, с помощью мастера форм
- Добавление одной или нескольких подчиненных форм в существующую форму с помощью мастера подчиненных форм
- Создание подчиненной формы путем перетаскивания одной формы в другую
- Открытие подчиненной формы в новом окне в конструкторе
- Изменение представления по умолчанию для подчиненной формы
- Добавление связанных данных в форму без создания подчиненной формы
Сведения о подчиненных формах
Подчиненная форма — это форма, которая вставляется в другую форму. Первичная форма называется основной формой, а закрытая форма называется подчиненной. Сочетание формы и подчиненной формы иногда называется иерархической формой, формой master/детализацией или формой "родитель-потомок".
Подформы работают особенно хорошо, если требуется отобразить данные из таблиц или запросов, имеющих отношение "один ко многим". В связи этого типа значение первичного ключа каждой записи в первичной таблице соответствует значению в соответствующем поле или полях многих записей в связанной таблице. Например, можно создать форму, отображающую данные сотрудников, и подчиненную форму, отображающую заказы каждого сотрудника. Данные в таблице "Сотрудники" являются в отношении стороной "один". Данные в таблице Orders являются стороной отношения "многие", так как каждый сотрудник может иметь несколько заказов.
В основной форме отображаются данные со стороны "один" связи.
В подчиненной форме отображаются данные со стороны "многие" связи.
Основная и подчиненная формы взаимодействуют таким образом, что в подчиненной выводятся только те записи, которые связаны с текущей записью в основной. Например, если в основной форме отображаются данные Ольги Зуевой, то в подчиненной отображаются только ее заказы. Если форма и подчиненная форма были несвязаны, в подчиненной форме будут отображаться все заказы, а не только Нэнси.
В следующей таблице определены термины, связанные с субформами. Access обрабатывает большую часть сведений, если вы используете процедуры, описанные в этой статье, но он помогает узнать, что происходит в фоновом режиме, если вам потребуется внести изменения позже.
| Термин | Определение |
|---|---|
| Элемент управления подчиненной формы | Элемент управления, который служит для внедрения одной формы в другую. Его можно рассматривать как "представление" другого объекта в базе данных, будь то другая форма, таблица или запрос. Элемент управления подчиненной формы обладает свойствами, которые позволяют связывать данные, отображаемые в нем, с данными в основной форме. |
| Свойство "Объект-источник" | Свойство элемента управления подчиненной формы, определяющее, какой объект в нем отображается. |
| Таблица | Простое отображение данных в строках и столбцах, как в электронной таблице. Элемент управления подчиненной формы отображает таблицу, если его исходный объект является таблицей или запросом или если его исходный объект является формой, свойство которой Default View имеет значение Datasheet. В этих случаях подчиненную форму иногда называют таблицей или подтаблицей. |
| Свойство "Подчиненные поля" | Свойство элемента управления подчиненной формы, указывающее, какое поле или поля в подчиненной форме связывают его с основной формой. |
| Свойство "Основные поля" | Свойство элемента управления подчиненной формы, указывающее, какое поле или поля основной формы связывают его с подчиненной формой. |
Примечание
- Перед тем, как выполнить описанные в этой статье действия, мы рекомендуем настроить связи между таблицами. Это позволит Access автоматически создать связи между основными и подчиненными формами. Чтобы просмотреть, добавить или изменить связи между таблицами в базе данных, на вкладке Работа с базами данных в группе Связи щелкните Связи.
- Если элемент управления подчиненной формы имеет форму в качестве исходного объекта, он содержит поля, которые вы размещаете в форме. Его можно просмотреть в виде одной формы, непрерывной формы или таблицы данных. Одним из преимуществ базирования подчиненной формы на объекте формы является то, что в подформу можно добавлять вычисляемые поля, например
[Quantity] * [Unit price]. - Можно также вставить в форму таблицу или сводное представление путем создания элемента управления подчиненной формы, объектом-источником для которого служит таблица или запрос. Дополнительные сведения см. в разделе Добавление связанных данных в форму без создания подчиненной формы.
Создание или добавление подчиненной формы
В таблице ниже представлены рекомендации по выбору процедуры, которая лучше всего подходит для конкретной ситуации.
| Сценарий | Рекомендуемая процедура |
|---|---|
| Нужно создать в приложении Access основную и подчиненную формы и связать их. | Создание формы, содержащей подчиненную форму, с помощью мастера форм |
| Нужно использовать существующую форму в качестве основной, но при этом создать в Access новую подчиненную форму и добавить ее в основную. | Добавление одной или нескольких подчиненных форм в существующую форму с помощью мастера подчиненных форм |
| Нужно использовать существующую форму в качестве основной и добавить в нее одну или несколько существующих форм в качестве подчиненных. | Создание подчиненной формы путем перетаскивания одной формы в другую |
Создание формы, содержащей подчиненную форму, с помощью мастера форм
Данная процедура позволяет создать новую комбинацию формы и подчиненной формы с помощью мастера форм. Это также самый быстрый способ приступить к работе, если вы еще не создали формы, которые вы хотите использовать в качестве основной или подчиненной формы.
На вкладке Создание в группе Формы нажмите кнопку Мастер форм.
На первой странице мастера в раскрывающемся списке Таблицы и запросы выберите таблицу или запрос. В этом примере, чтобы создать форму "Сотрудники", которая отображает заказы для каждого сотрудника в подчиненной форме, выберите Таблица: Сотрудники (сторона "один" отношения "один ко многим").
Примечание
Порядок выбора таблиц и запросов не имеет значения.
Дважды щелкните поля таблицы или запроса, которые нужно включить в форму.
На той же странице мастера в раскрывающемся списке Таблицы и запросы выберите другую таблицу или запрос. В этом примере выберите таблицу Orders (сторона "многие" отношения "один ко многим").
Дважды щелкните поля таблицы или запроса, которые нужно включить в форму.
При нажатии кнопки Далее при условии, что вы правильно настроили отношения перед запуском мастера, мастер спрашивает, как вы хотите просмотреть данные? — то есть, по какой таблице или запросу. Выберите таблицу на стороне "один" связи "один ко многим". В этом примере, чтобы создать форму Сотрудники, выберите параметр Сотрудники. Мастер отображает небольшую схему формы. Страница должна выглядеть так:
Поле в нижней части изображения формы обозначает подчиненную форму.
Примечание
Если запрос Выберите способ представления данных не отображается, это означает, что приложению Access не удалось обнаружить связь "один-ко-многим" между выбранными таблицами или запросами. Мастер продолжит работу, но в форму не будет добавлена подчиненная форма. Если вы хотите сначала проверить связи между таблицами, нажмите кнопку Отмена.
Установите в нижней части страницы мастера переключатель Подчиненные формы и нажмите кнопку Далее.
На странице Выберите внешний вид подчиненной формы: выберите нужный вариант макета и нажмите кнопку Далее. Оба стиля макета упорядочиют данные подчиненной формы в строках и столбцах, но табличный макет предоставляет дополнительные возможности. В ленточной подчиненной форме можно добавлять цвет, изображения и другие элементы форматирования, однако табличный макет компактнее, как и табличное представление таблицы.
На следующей странице мастера выберите стиль форматирования для формы и нажмите кнопку Далее. Если на предыдущей странице вы выбрали значение Табличный, выбранное форматирование стиля также применяется к подчиненной форме.
На последней странице мастера введите заголовки форм. Имена автоматически присваиваются формам на основе введенных заголовков, а надписи подчиненных форм — на основе введенных заголовков подчиненных форм.
Укажите, нужно ли открыть форму в режиме формы, чтобы можно было просматривать или вводить сведения, или в режиме конструктора, чтобы можно было изменить ее структуру, а затем нажмите кнопку Готово. Access создает две формы: одну для основной формы, содержащей элемент управления подчиненной формы, а другую — для самой подчиненной формы.
Добавление одной или нескольких подчиненных форм в существующую форму с помощью мастера подчиненных форм
Используйте эту процедуру для добавления одной или нескольких подчиненных форм в существующую форму. Для каждой подчиненной формы можно создать новую форму или использовать существующую.
- В области навигации щелкните существующую форму правой кнопкой мыши и выберите пункт Конструктор.
- На вкладке Конструктор формы в группе Элементы управления щелкните стрелку вниз, чтобы отобразить коллекцию элементов управления , и убедитесь, что выбран параметр Использовать мастеры управления .
- На вкладке Конструктор формы в группе Элементы управления нажмите кнопку Подчиненная форма или вложенный отчет .
- Щелкните форму, в которую нужно поместить подчиненную форму.
- Следуйте указаниям мастера. После нажатия кнопки Готово в форму будет добавлена подчиненная форма. Если для подчиненной формы создается новая форма, а не используется существующая, новый объект формы будет создан и добавлен в область навигации.
Создание подчиненной формы путем перетаскивания одной формы в другую
Используйте эту процедуру, если вы хотите использовать существующую форму в качестве основной формы и добавить в нее одну или несколько существующих форм в качестве дочерних форм.
- В области навигации щелкните правой кнопкой мыши форму, которую нужно использовать в качестве основной, и выберите пункт Конструктор.
- Перетащите форму, которую вы хотите использовать в качестве подчиненной, из области навигации на основную форму. Access добавит в основную форму элемент управления подчиненной формы, который будет связан с формой, добавленной путем перетаскивания из области навигации. Он также попытается связать подчиненную форму с основной на основе отношений, определенных в базе данных.
- Повторите этот шаг, чтобы добавить другие подчиненные формы в основную.
- Чтобы проверить, успешно ли создана связь, на вкладке Главная в группе Режимы нажмите кнопку Режим, выберите команду Режим формы и с помощью селектора записей основной формы просмотрите несколько записей. Если в подчиненной форме правильно отображаются данные для каждого сотрудника, это означает, что процедура завершена успешно.
Если предыдущий тест не работает, Access не удалось определить, как связать подчиненную форму с основной формой, а Link Child Fields свойства и Link Master Fields элемента управления подчиненной формы пусты. Задайте значения для этих свойств вручную, выполнив указанные ниже действия.
В области навигации щелкните основную форму правой кнопкой мыши и выберите пункт Конструктор.
Щелкните элемент управления подчиненной формы один раз, чтобы выделить его.
Если область задач "Лист свойств" не отображается, нажмите клавишу F4 , чтобы отобразить ее.
В окне свойств откройте вкладку Данные.
Нажмите кнопку Сборка рядом с полем
Link Child Fieldsсвойства.
Откроется диалоговое окно Компоновщик полей подчиненной формы .В раскрывающихся списках Главные идочерние поля выберите поля, с которыми нужно связать формы, и нажмите кнопку ОК. Если вы не знаете, какие поля следует использовать, нажмите кнопку Предложить , чтобы access попыталась определить поля связывания.
Совет
Если поле, которое нужно использовать для связывания форм, не отображается, может потребоваться изменить источник записи master формы или дочерней формы, чтобы убедиться, что поле ссылки включено. Например, если форма основана на запросе, следует убедиться, что связывающее поле присутствует в результатах запроса.
Сохраните основную форму и переключитесь в режим формы, а затем проверьте, правильно ли она работает.
Открытие подчиненной формы в новом окне в Конструкторе
Если вы хотите внести изменения в структуру подчиненной формы во время работы над основной формой в Конструкторе, вы можете открыть ее в отдельном окне:
- Щелкните подчиненную форму, чтобы выбрать ее.
- На вкладке Конструктор формы в группе Сервис щелкните Подчиненная форма в новом окне.
Изменение представления по умолчанию для подчиненной формы
При добавлении подчиненной формы в форму элемент управления subform/subreport отображает подформу в соответствии со свойством Default View подчиненной формы. Ниже перечислены значения, которые можно установить для этого свойства.
- Простая форма
- Ленточные формы
- Таблица
- Разделенная форма
При первом создании подчиненной формы для этого свойства может быть задано значение Непрерывные формы или Отдельная форма. Однако если для свойства подчиненной формы задано Default View значение Datasheet, подформа отображается в виде таблицы в основной форме.
Чтобы задать Default View свойство подчиненной формы, выполните следующие действия:
Закройте все открытые объекты.
В области навигации щелкните подчиненную форму правой кнопкой мыши и выберите пункт Конструктор.
Если страница свойств еще не отображается, нажмите клавишу F4 , чтобы отобразить ее.
Убедитесь в том, что в раскрывающемся списке в верхней части окна свойств выбран пункт Форма.
На вкладке Формат окна свойств задайте для свойства Режим по умолчанию нужное значение.
Примечание
Если нужного представления нет в списке, убедитесь
Allow...View, что для свойства этого представления задано значение Да. Например, если нужно выбрать вариант Режим таблицы, убедитесь, что для свойства Режим таблицы установлено значение Да.Сохраните и закройте подчиненную форму, а затем откройте основную форму, чтобы проверить результаты.
Добавление связанных данных в форму без создания подчиненной формы
Вам не всегда нужно создавать отдельный объект формы для отображения связанных данных. Например, если вы работаете над формой в режиме макета или конструктора и перетаскиваете таблицу или запрос из области навигации в форму, Access создает элемент управления подчиненной формы или подчиненного отчета, который отображает данные в этом объекте. Свойство объекта Default View определяет способ отображения данных. Обычно для этого параметра задано представление таблицы, но можно также задать Default View для свойства таблицы или запроса значение Single Form, Split Form или Continuous Forms, что обеспечивает большую гибкость при отображении связанных данных в формах.
Примечание
Default View Изменение свойства для таблицы или запроса определяет, как оно отображается при каждом открытии, открывается ли оно в области навигации или просматривается в элементе управления подчиненной формы или подчиненного отчета. Поскольку изменение параметров отображения таблицы иногда может привести к путанице при ее открытии из области навигации, в этой процедуре рекомендуется вместо таблицы использовать запрос.