Создание многотабличных форм
Создание главной и подчиненной форм с помощью Мастера автоформ
В предыдущей версии Access – Access 2000 появилась возможность более интеллектуального автоматического отслеживания связей между таблицами. Поэтому самые простые формы для связанных таблиц можно построить с помощью Мастера автоформ. Он сразу найдет все таблицы, которые связаны с главной отношением "один-ко-многим", и создаст для каждой такой таблицы подчиненную форму. В качестве примера давайте создадим новую форму "Клиенты", в которой должны быть отражены не только данные о клиенте, но и о его заказах.
Сначала откройте окно Схема данных (Relationship) и посмотрите, как связаны интересующие нас таблицы (рис. 9.30). Таблица "Клиенты" (Customers) связана с таблицей "Заказы" (Orders) отношением "один-ко-многим". В свою очередь таблица "Заказы" (Orders) связана с таблицей "Заказано" (Order Details) тоже отношением "один-ко-многим".
Рис. 9.30. Диалоговое окно Схема данных
Теперь в окне базы данных на странице Таблицы (Table) выделите таблицу "Клиенты" и нажмите стрелку вниз на кнопке Новый объект (New Object) на панели инструментов. В открывшемся списке выберите объект Автоформа (AutoForm).
Подождите, пока Мастер автоформ закончит свою работу. В результате вы должны увидеть на экране форму, которая представлена на рис. 9.31.
Чтобы открыть вторую подчиненную форму (список подчиненных записей следующего уровня), просто щелкните мышью по квадратику с крестом слева от выбранной записи в подчиненной форме. В данном примере в главной форме отображается одна запись о клиенте, а в подчиненной форме отображаются только те записи из таблицы "Заказы" (Orders), которые связаны с текущей записью в главной форме, т. е. только заказы текущего клиента. В списке подчиненных записей для выбранного заказа отображается список заказанных продуктов.
Рис. 9.31. Составная форма, созданная Мастером автоформ
Уже из этой формы видно, что Access обеспечивает вложенность подчиненных форм, причем максимальное количество уровней вложенности достаточно велико – 7. С другой стороны, если таблица связана отношением "один-ко-многим" с несколькими таблицами, то в одну главную форму можно встроить любое количество подчиненных форм.
Такое иерархическое представление связанных данных удобно не только для отображения, но и для ввода данных.
Например, нужно оформить заказ клиенту, которого еще нет в базе данных. Значит, требуется добавить запись о новом клиенте в таблицу. Для этого перейдите в режим ввода записи в главной форме, щелкнув мышью по кнопке Новая запись (New Record) внизу формы или на панели инструментов. Введите данные о клиенте, а затем переместите фокус в подчиненную форму для оформления заказа. Как только вы переместите фокус в подчиненную форму, запись о клиенте из главной формы будет сохранена. Теперь подчиненная запись о заказе будет корректно добавлена в таблицу "Заказы" (Orders), гарантируя сохранение ссылочной целостности.
Аналогично будет сохранена запись о заказе, прежде чем начнут вводиться данные о заказанных продуктах во вложенной подчиненной форме. Записи в подчиненной форме сохраняются при переходе к каждой следующей строке.