Создание формы, содержащей подчиненную форму (форма с отношением «один-ко-многим»)
Applies ToAccess для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

При работе с реляционными данными (связанными данными, хранящимися в отдельных таблицах) в Access часто требуется просмотреть несколько таблиц или запросов в одной форме. Например, может потребоваться одновременно просмотреть данные клиента из одной таблицы и сведения о его заказах из другой. Подчиненные формы — удобный инструмент для подобных задач, и в Access их можно быстро создать несколькими способами.

В этой статье

Сведения о подчиненных формах

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

Подчиненные формы особенно удобны для отображения данных из таблиц или запросов с отношением "один-ко-многим". Отношение "один-ко-многим" представляет собой связь между двумя таблицами, при которой значение первичного ключа каждой записи в главной таблице соответствует значению в соответствующем поле или полях нескольких записей в связанной таблице. Например, можно создать форму, в которой отображаются сведения о сотрудниках и которая содержит подчиненную форму с заказами каждого сотрудника. Данные в таблице "Сотрудники" являются в отношении стороной "один". Данные в таблице "Заказы" являются в отношении стороной "многие" — для каждого сотрудника может быть несколько заказов.

Форма, содержащая подчиненную форму

1. В основной форме отображаются данные на стороне отношения "один".

2. В подчиненной форме выводятся данные на стороне отношения "многие".

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

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

Термин

Определение

Элемент управления подчиненной формы

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

Свойство "Объект-источник"

Свойство элемента управления подчиненной формы, определяющее, какой объект в нем отображается.

Таблица

Простое отображение данных в строках и столбцах, как в электронной таблице. В элементе управления подчиненной формы отображается таблица, когда объектом-источником является таблица или запрос, либо форма, для свойства "Режим по умолчанию" которой задано значение "Режим таблицы". В этих случаях подчиненную форму иногда называют таблицей или подтаблицей.

Свойство "Подчиненные поля"

Свойство элемента управления подчиненной формы, которое задает поле или поля в подчиненной форме, которые будут связывать ее с основной.

Свойство "Основные поля"

Свойство элемента управления подчиненной формы, которое задает поле или поля в основной форме, которые будут связывать ее с подчиненной.

Примечания: 

  • Перед тем, как выполнить описанные в этой статье действия, мы рекомендуем настроить связи между таблицами. Это позволит Access автоматически создать связи между основными и подчиненными формами. Чтобы просмотреть, добавить или изменить связи между таблицами в базе данных, на вкладке Работа с базами данных в группе Связи щелкните Связи.

  • Когда элемент управления подчиненной формы имеет в качестве объекта-источника форму, он содержит поля, помещенные в нее и его можно просмотреть как одиночную форму, ленточную форму или таблицу. Одним из преимуществ создания подчиненной формы на основе формы является возможность добавления вычисляемых полей в подчиненную форму, например: [Количество] * [Цена].

  • Можно также вставить в форму таблицу или сводное представление путем создания элемента управления подчиненной формы, объектом-источником для которого служит таблица или запрос. Дополнительные сведения см. в разделе Добавление связанных данных в форму без создания подчиненной формы.

К началу страницы

Создание или добавление подчиненной формы

В таблице ниже представлены рекомендации по выбору процедуры, которая лучше всего подходит для конкретной ситуации.

Сценарий

Рекомендуемая процедура

Нужно создать в приложении Access основную и подчиненную формы и связать их.

Создание формы, содержащей подчиненную форму, с помощью мастера форм

Нужно использовать существующую форму в качестве основной, но при этом создать в Access новую подчиненную форму и добавить ее в основную.

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

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

Создание подчиненной формы путем перетаскивания одной формы в другую

Создание формы, содержащей подчиненную форму, с помощью мастера форм

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

  1. На вкладке Создание в группе Формы нажмите кнопку Мастер форм

  2. На первой странице мастера в раскрывающемся списке Таблицы и запросы выберите таблицу или запрос. Например, чтобы создать форму "Сотрудники" для отображения в подчиненной форме списка заказов для каждого сотрудника, выберите пункт Таблица: Сотрудники (сторона "один" отношения "один-ко-многим").

    Примечание: Порядок выбора таблиц и запросов не имеет значения.

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

  4. На той же странице мастера в раскрывающемся списке Таблицы и запросы выберите другую таблицу или запрос. В данном примере мы выберем таблицу "Заказы" (сторона "многие" связи "один-ко-многим").

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

  6. При нажатии кнопки Далее при условии, что вы правильно настроили отношения перед запуском мастера, мастер спрашивает, как вы хотите просмотреть данные? — то есть, по какой таблице или запросу. Выберите таблицу на стороне "один" связи "один ко многим". В этом примере, чтобы создать форму "Сотрудники", мы щелкаем по элементу "Сотрудники". Мастер отображает небольшую схему формы. Страница должна выглядеть так:

    Страница подчиненной формы в мастере форм

    Поле в нижней части изображения формы обозначает подчиненную форму.

    Примечание: Если запрос Выберите способ представления данных не отображается, это означает, что приложению Access не удалось обнаружить связь "один-ко-многим" между выбранными таблицами или запросами. Мастер продолжит работу, но в форму не будет добавлена подчиненная форма. Если вы хотите сначала проверить связи между таблицами, нажмите кнопку Отмена.

  7. Установите в нижней части страницы мастера переключатель Подчиненные формы и нажмите кнопку Далее.

  8. На странице Выберите внешний вид подчиненной формы: выберите нужный вариант макета и нажмите кнопку Далее. В макетах обоих стилей данные подчиненной формы располагаются в виде строк и столбцов, но ленточный макет имеет больше возможностей настройки. В ленточной подчиненной форме можно добавлять цвет, изображения и другие элементы форматирования, однако табличный макет компактнее, как и табличное представление таблицы.

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

  10. На последней странице мастера введите заголовки форм. Имена автоматически присваиваются формам на основе введенных заголовков, а надписи подчиненных форм — на основе введенных заголовков подчиненных форм.

  11. Укажите режим, в котором вы хотите открывать форму: режим формы (чтобы можно было просмотреть или ввести данные) или Конструктор (чтобы можно было изменить ее структуру). Затем нажмите кнопку Готово.

    Access создаст две формы — основную форму, которая содержит подчиненную, и саму подчиненную форму.

К началу страницы

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

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

  1. В области навигации щелкните существующую форму правой кнопкой мыши и выберите пункт Конструктор.

  2. На вкладке Конструктор формы в группе Элементы управления щелкните стрелку вниз, чтобы отобразить коллекцию элементов управления , и убедитесь, что выбран параметр Использовать мастеры управления .

  3. На вкладке Конструктор формы в группе Элементы управления нажмите кнопку Подчиненная форма или вложенный отчет .

  4. В форме щелкните место, куда нужно поместить подчиненную форму.

  5. Следуйте указаниям мастера.

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

Создание подчиненной формы путем перетаскивания одной формы в другую

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

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

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

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

  3. Повторите этот шаг, чтобы добавить другие подчиненные формы в основную.

  4. Чтобы проверить, успешно ли создана связь, на вкладке Главная в группе Режимы нажмите кнопку Режим, выберите команду Режим формы и с помощью селектора записей основной формы просмотрите несколько записей. Если в подчиненной форме правильно отображаются данные для каждого сотрудника, это означает, что процедура завершена успешно.

Если проверка не работает, это означает, что программе Access не удалось создать связь подчиненной формы с основной и свойства Подчиненные поля и Основные поля элемента управления подчиненной формы остались пустыми. Задайте значения для этих свойств вручную, выполнив указанные ниже действия.

  1. В области навигации щелкните основную форму правой кнопкой мыши и выберите пункт Конструктор.

  2. Щелкните элемент управления подчиненной формы один раз, чтобы выделить его.

  3. Если область задач "Окно свойств" не отображается, нажмите клавишу F4.

  4. В окне свойств откройте вкладку Данные.

  5. Нажмите кнопку Сборка Кнопка "Построитель" рядом с полем свойства Связывание дочерних полей .

    Будет открыто диалоговое окно Связь с полями подчиненной формы.

  6. В раскрывающихся списках Главные идочерние поля выберите поля, с которыми нужно связать формы, и нажмите кнопку ОК. Если вы не знаете, какие поля следует использовать, нажмите кнопку Предложить , чтобы access попыталась определить поля связывания.

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

  7. Сохраните основную форму и переключитесь в режим формы, а затем проверьте, правильно ли она работает.

Открытие подчиненной формы в новом окне в Конструкторе

Если вы хотите внести изменения в структуру подчиненной формы во время работы над основной формой в Конструкторе, вы можете открыть ее в отдельном окне:

  1. Щелкните подчиненную форму, чтобы выбрать ее.

  2. На вкладке Конструктор формы в группе Сервис щелкните Подчиненная форма в новом окне.

К началу страницы

Изменение представления по умолчанию для подчиненной формы

При добавлении подчиненной формы в форму элемент управления подчиненной формы (или отчета) отображает подчиненную форму в соответствии с ее свойством Режим по умолчанию. Ниже перечислены значения, которые можно установить для этого свойства.

  • Простая форма

  • Ленточные формы

  • Таблица

  • Разделенная форма

При создании подчиненной формы для этого свойства может быть установлено значение Ленточные формыили Простая форма. Однако если для свойства Режим по умолчанию подчиненной формы установить значение Режим таблицы, она будет отображаться как таблица в основной форме.

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

  1. Закройте все открытые объекты.

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

  3. Если окно свойств не отображается, нажмите клавишу F4.

  4. Убедитесь в том, что в раскрывающемся списке в верхней части окна свойств выбран пункт Форма.

  5. На вкладке Формат окна свойств задайте для свойства Режим по умолчанию нужное значение.

    Примечание: Если нужный режим отсутствует в списке, убедитесь в том, что для свойства "Режим..." установлено значение Да. Например, если нужно выбрать вариант Режим таблицы, убедитесь, что для свойства Режим таблицы установлено значение Да.

  6. Сохраните и закройте подчиненную форму, а затем откройте основную форму, чтобы проверить результаты.

К началу страницы

Добавление связанных данных в форму без создания подчиненной формы

Не всегда нужно создавать отдельный объект формы для отображения связанных данных. Например, если вы работаете над формой в режиме макета или конструктора и перетаскиваете таблицу или запрос из области навигации в форму, Access создает элемент управления подчиненной формы или подчиненного отчета, который отображает данные в этом объекте. Свойство Представления по умолчанию объекта определяет способ отображения данных. Обычно для этого параметра задано представление таблицы, но можно также задать для свойства Представление по умолчанию таблицы или запроса значение Single Form, Split Form или Continuous Forms, что обеспечивает большую гибкость при отображении связанных данных в формах.

Примечание: Изменение свойства Режим по умолчанию для таблицы или запроса влияет на способ их отображения при открытии из области навигации или при просмотре в элементе управления подчиненной формы или отчета. Поскольку изменение параметров отображения таблицы иногда может привести к путанице при ее открытии из области навигации, в этой процедуре рекомендуется вместо таблицы использовать запрос.

К началу страницы

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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