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

Связывание главной и подчиненной форм осуществляется с помощью свойств Основные поля (Link Master Fields) и Подчиненные поля (Link Child Fields) элемента управления Подчиненная форма/отчет (Subform/Subreport). Как мы уже сказали, мастера форм автоматически заполняют эти свойства, основываясь на связях между таблицами. Если связи не заданы, то связующими полями считаются поля в таблицах, которые имеют одинаковые имена и совместимые типы данных. При этом связующее поле в базовой таблице для главной формы должно быть ключевым.
Если при разработке иерархической формы данные в главной и подчиненной формах окажутся не синхронизированными, следует проверить значение свойств Основные поля (Link Master Fields) и Подчиненные поля (Link Child Fields) и ввести или откорректировать их значения:

  1. Откройте главную форму в режиме Конструктора.
  2. Выделите элемент управления Подчиненная форма/отчет (Subform/Subreport) (проще всего сделать это, описав с помощью мыши прямоугольник вокруг или пересекая этот элемент управления) и откройте окно Свойства (Properties) для этого элемента.
  3. В ячейку свойства Подчиненные поля (Link Child Fields) следует ввести имя связующего поля из таблицы или запроса, на котором базируется подчиненная форма.
  4. В ячейку свойства Основные поля (Link Master Fields) необходимо ввести имя связующего поля из таблицы или запроса, на котором базируется главная форма.
  5. Если вы не помните имена полей в базовых таблицах или запросах, можно воспользоваться Построителем для связывания полей. Нажмите кнопку Построителя справа от любого из упомянутых свойств, и на экране появится диалоговое окно (рис. 9.38).

В левой части окна расположены раскрывающиеся списки для выбора связующих полей в главной форме, в правой — для выбора связующих полей в подчиненной форме. Связь может задаваться с помощью нескольких полей. Это может быть, если ключевое поле в главной таблице составное. Построитель позволяет задать максимум три поля и, как правило, этого хватает. В противном случае нужно просто вписать недостающие поля в значения свойств, разделив их точкой с запятой. Важно только, чтобы поля в каждом из данных свойств перечислялись в одинаковом порядке.
В предложенных списках содержатся все поля базовых таблиц или запросов. Это означает, что связующие поля необязательно должны присутствовать в формах, они обязаны присутствовать в источнике данных формы.
 
Синхронизация данных в элементах формы
В этом разделе приведены некоторые типичные примеры, иллюстрирующие отображение в форме данных в соответствии со значениями некоторых ее элементов. Вообще говоря, подобные приемы можно применить для синхронизации данных как в простых, так и в составных формах, содержащих подчиненные формы. Примеры подобраны, исходя из наиболее часто встречающихся вопросов у наших читателей. Мы надеемся, что изучение этого раздела, а также применение комбинаций описанных приемов, помогут читателям решить основные задачи при проектировании интерактивных форм.
Переход на определенную запись в форме
Типичной задачей является организация более удобного чем последовательный перебор перехода по записям в форме, задавая значения каких-то полей записи, для ее поиска по ним. Например, в форме с информацией для большого количества сотрудников хотелось бы быстро перейти к карточке сотрудника с известной фамилией. Это можно сделать с помощью специального списка для выбора фамилии.
В мы упомянули о том, что при создании списка/поля со списком с помощью Мастера в форме, привязанной к источнику данных, Access предлагает сделать его средством перехода к нужной записи в форме. Рассмотрим пример создания такого списка:

  1. Откройте в режиме Конструктора форму "Сотрудники" (Employees) базы данных "Борей" (Northwind).
  2. Убедитесь, что на панели инструментов Панель элементов (Toolbox) нажата кнопка Мастера (Control Wizards). Нажмите кнопку Поле со списком (Combo Box) и разместите новый элемент в разделе заголовка формы, начертив мышью прямоугольник нужного размера.
  3. Появится первое диалоговое окно Мастера списков. Выберите переключатель Поиск записи в форме на основе значения, которое содержит поле со списком (Find a record on my form based on the value I selected in my combo box) и нажмите кнопку Далее (Next).
  4. В следующем диалоговом окне мастера выберите поля, которые образуют столбцы элементов списка: "КодСотрудника" (EmployeeID), "Фамилия" (LastName) и "Имя" (FirstName). Нажмите кнопку Далее (Next).
  5. В следующем диалоговом окне Мастера списков предлагается настроить ширину столбцов списка. Столбец с ключевым полем "КодСотрудника" рекомендуется сделать скрытым (установите флажок Скрыть ключевой столбец (Hide key column)). Оставьте предложенные параметры и нажмите кнопку Далее (Next).
  6. В последнем диалоговом окне мастера требуется ввести текст метки, поясняющей назначение списка. Введите текст: Фамилия: и нажмите кнопку Готово (Finish).

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

Действие созданного поля со списком обеспечивается процедурой обработки события После обновления (After Update), сгенерированной мастером.