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