Создание многотабличных форм для таблиц, имеющих отношение "один-ко-многим"
Во всех рассмотренных нами ранее примерах по созданию форм использовались связанные таблицы с отношением между ними "один-к-одному" или "многие-к-одному". При создании приложений очень часто возникает необходимость просмотра и редактирования данных, имеющих отношение "один-ко-многим". В этом случае при создании формы для отображения записей основной таблицы можно использовать поля формы или объект Grid (Таблица), а для отображения данных подчиненной таблицы — объект Grid (Таблица). Рассмотрим создание многотабличных форм с помощью мастера и конструктора форм.
Создание многотабличной формы с помощью мастера
Рассмотрим создание формы для связанных таблиц customer и Phoncust, имеющих отношение "один-ко-многим", с помощью мастера. Таблица customer содержит информацию о клиентах, таблица Phoncust - номера телефонов, по которым можно с ними связываться.
- Откройте проект sales.
- Перейдите на вкладку Documents (Документы), выберите группу Forms (Формы) и нажмите кнопку New (Новый).
- В открывшемся диалоговом окне New Form (Новая форма) выберите опцию Form Wizard (Мастер формы).
Рис. 15.7. Диалоговое окно для выбора мастера многотабличной формы
- На экране открывается диалоговое окно, предназначенное для выбора мастера создания формы (рис. 15.7). Поскольку мы создаем форму для связанных таблиц, выберите опцию One-to-Many Form Wizard (Мастер формы с отношением один-ко-многим) и нажмите кнопку ОК для вызова мастера многотабличной формы.
- В области Databases and tables (Базы данных и таблицы) выберите главную таблицу формы Customer. После выбора таблицы в списке Available fields (Имеющиеся поля) появится перечень всех полей данной таблицы. Перенесите из этого списка в список Selected fields (Выбранные поля) поля, которые вы хотите поместить в создаваемую форму из данной таблицы (рис. 15.8). Затем нажмите кнопку Next (Далее) для перехода к следующему шагу.
Рис. 15.8. Выбор полей главной таблицы
- На втором шаге работы мастера выберите подчиненную таблицу и ее поля, которые будут размещены в форме в виде объекта Grid (Таблица) (рис. 15.9). Для перехода к следующему шагу нажмите кнопку Next (Далее).
- На третьем шаге мастера необходимо установить связь между таблицами. используемыми в форме (рис. 15.10). В диалоговом окне размещены два раскрывающихся списка, содержащие индексы и поля исходных таблиц. В нашем примере для установления связи воспользуемся ключевым полем icdCustomer таблицы Customer и индексом icdCustomer таблицы phoncust. Установив связь между таблицами, нажмите кнопку Next (Далее).
Рис. 15.9. Выбор полей подчиненной таблицы, помещаемых в объект Grid
Рис. 15.10. Установка связи между таблицами
- На четвертом шаге (рис. 15.11) необходимо установить стиль отображения объектов формы, воспользовавшись значениями из списка Style (Стиль), и тип кнопок управления, выбрав одну из опций в группе Button type (Тип кнопки). Выберите стиль, просмотрите результат выбора в верхней части диалогового окна. Затем выберите тип отображения кнопок управления (с текстовыми надписями или с изображениями). Если вы не хотите размещать кнопки в форме, установите опцию No buttons (Без кнопок). После того как вы установили требуемые параметры, нажмите кнопку Next (Далее).
Рис. 15.11. Выбор стиля отображения полей и управляющих кнопок
Рис. 15.12. Установка критерия сортировки данных
- На следующем шаге формируется список полей, по которым будет осуществляться сортировка отображаемых в форме данных. Для переноса поля из списка Available fields or index tag (Имеющиеся поля и индексы) в список Selected fields (Выбранные поля) установите курсор на поле или индекс, по значению которого требуется упорядочивать данные, и нажмите кнопку Add (Добавить). Если вы ошибочно перенесли не то поле или индекс, удалить его из списка Selected fields (Выбранные поля) можно с помощью кнопки Remove (Удалить). Установите опцию Ascending (По возрастанию) или Descending (По убыванию), определяющую, по возрастанию или по убыванию значения выбранного поля будут упорядочиваться данные (рис. 15.12). Для перехода к следующему шагу создания формы нажмите кнопку Next (Далее).
- На последнем, шестом шаге, в поле ввода Type a title for your form (Введите заголовок формы) задайте заголовок, размещаемый в форме, и выберите один из трех вариантов продолжения работы с формой (рис. 15.13) (табл. 15.3).
Таблица 15.3. Варианты продолжения работы с формой
Опция |
Действие |
Save form for later use (Сохранить форму) |
Созданная форма сохраняется на диске |
Save and run form (Сохранить и запустить форму на выполнение) |
Созданная форма сохраняется и запускается на выполнение |
Save form and modify it in the Form Designer (Сохранить и открыть для модификации в конструкторе форм) |
Созданная форма сохраняется и открывается в конструкторе форм для модификации |
В форме находятся флажки следующего назначения:
- Use field mappings (Использовать соответствия полей). При установке флажка мастер использует соответствия типов объектов, создаваемых в форме при размещении в ней полей таблицы, заданные на вкладке Field Mapping (Связь типов элементов управления с типами полей таблиц) диалогового окна Options (Параметры);
- Override with DBC field display classes (Заменять классами объектов, заданных для полей таблицы). При установке флажка мастер использует соответствия типов объектов, создаваемых в форме при размещении в ней полей таблицы, заданные в конструкторе таблицы на вкладке Fields (Поля) с помощью списка Display class (Показывать класс) области Map field type to classes (Используемые типы полей для классов). Если эти соответствия не заданы, используется опция Use field mappings.
После установки требуемых параметров нажмите кнопку Finish (Готово) для завершения создания объекта с помощью мастера. В открывшемся диалоговом окне Save as (Сохранить как) выберите папку, в которой хотите разместить форму, и введите имя созданной формы.
Рис. 15.13. Заключительное диалоговое окно мастера
Рис. 15.14. Многотабличная форма, созданная с помощью мастера форм
Посмотрите на форму, созданную с помощью мастера (рис. 15.14). Надписи к полям основной таблицы созданы с использованием информации, введенной в поле Caption (Надпись) свойства таблицы. Однако при формировании названий столбцов объекта Grid (Таблица) мастер не использовал это свойство таблицы. Для изменения наименований столбцов вам потребуется конструктор форм.