Связи таблиц и простые формы

Программа Access достаточно сообразительна, чтобы заметить связи во время создания но­вой формы для родительской таблицы. Для того чтобы понять, что это значит на практике, выделите таблицу-родитель для другой таблицы. Можно воспользоваться таблицей ProductCategories в БД Boutique Fudge, поскольку каждая категория служит родительской записью, связанной с одной или несколькими записями-потомками в таблице Products. (Можно также использовать таблицу Customers, поскольку клиенты связаны с заказами, или таблицу Orders,т. к. заказы связаны с конкретными компонентами заказа. Для практической проверки примените БД Boutique Fudge для данной главы, содержащую загружае­мые из Интернета данные.)

На рис. 13.20 показано, что произойдет, если выделить таблицу ProductCategories, а за­тем выбрать на ленте Создание → Формы → Форма.Программа Access создает форму, которая выводит ожидаемые записи (категории) и связанные записи из таблицы-потомка (в данном случае товары).


Примечание

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

Рис. 13.20.Эта форма позволяет просматривать разные категории товаров. При каждом переходе к новой категории мини-лист данных на форме отображает связанные записи о товарах. С помощью такой формы можно редактировать данные о товарах и о категории товаров

 

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

 

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

Программа выводит связанные записи с помощью элемента управления Подчиненная фор­ма.Этот элемент можно добавить на любую форму для отображения связанных записей. Он доступен в группе ленты Инструменты конструктора форм | Конструктор → Элементы

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


То, что отображает подчиненная форма, определяется тремя свойствами. Первое свойст­во Объект-источник(Source Object) задает объект БД, имеющий связанные записи. Можно выбрать существующие таблицу, запрос или форму.

Следующие два свойства — Основные поля(Link Master Fields) и Подчиненные поля (Link Child Fields) — позволяют определить способ связи двух таблиц. Основное поле — это поле в форме, а подчиненное поле — это поле в объекте-источнике. В примере с категориями товаров основное поле — ID (в таблице ProductCategories)и подчиненное поле — поле ProductID(в таблице Products).После того как эта связь определена, программа Access знает, как фильтровать подчиненную форму. Она просматривает основное поле и отобража­ет только те записи, у которых то же значение в подчиненном поле. На рис. 13.20 Access ото­бражает товары текущей категории.

Обычно основное поле относится к родительской таблице, а подчиненное поле — к таб­лице-потомку. Но это отношение можно изменить на обратное. Можно создать форму с то­варами, которая включает подчиненную форму, отображающую категорию, соответствую­щую каждому товару. Если применяется подобный подход, подчиненная форма включает только одну запись (т. к. только один родитель связан с каждой записью).

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

 

 

Подсказка

Если в форму включена подчиненная форма, подумайте об использовании средств привязки, описанных в разд. "Привязка: автоматическое изменение размеров элементов управления" ра­нее в этой главе, так чтобы подчиненная форма увеличивалась за счет доступного свободного пространства, появляющегося при изменении размера формы.