Access 2002

Один-ко-многим


Вложить одну форму в другую или просто их синхронизировать?

Если вы хотите вывести в форме данные, связанные отношением «один-ко-многим», это легко организовать. Достаточно создать отдельную форму для каждой таблицы, а потом перетащить (drag-and-drop) одну форму на другую. Если между таблицами заранее определена связь, Access даже заполнит для вас свойства LinkChildFields и LinkMasterFields элемента управления SubForm.

У этого метода есть свои достоинства и недостатки. Уровень вложения форм не может превышать двух. Это значит, что у вас может быть три уровня данных: одна главная таблица (запрос) плюс два уровня подчиненных таблиц (запросов). С другой стороны, организовать работу подчиненных форм очень просто. Фактически вам нужно лишь задать значения нескольких связующих свойств, а все остальное Access сделает за вас. На  7.17 приведен пример многоуровневой формы из базы данных CH07.MDB. Это форма frmNested, в которую вложена форма frmNestedOrders, в которую, в свою очередь, вложена форма frmNestedOrder- Detail. Данные двух подчиненных форм связывает поле Order ID, а данные главной и первой подчиненной форм — поле CustomerlD. Для организации работы этой формы не потребовалось ни одного макроса и ни одной строки кода.

Хотя пример, показанный на  7.17, создать исключительно легко, у многоуровневых форм есть жесткие ограничения. Мы уже говорили, что они не позволяют отображать больше трех уровней данных. Кроме того, таблица или ленточная форма служат для представления только последнего уровня данных. Если

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

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

Комментарии закрыты