![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Подсоединение компонента визуализации DBGrid к данным из двух, связанных по внешнему ключу, таблиц
Информация о студентах, в том виде как она представлена на рисунке 3., не является полной: отсутствует точное наименование группы – вместо него в таблице показаны значения примарного ключа из таблицы с наименованиями групп. Было бы неплохо добавить в таблицу еще один столбец, в котором бы отображалось наименование группы, как показано на рисунке 8. Достигнуть этого с помощью только одного компонента визуализации DBGrid нельзя. Требуется несколько изменить сам компонент набора данных Table1, точнее, к нему нужно добавить новое поле. Откроем новый проект и поместим на форму компоненты Table, DataSource и DBGrid. Соединим указанные компоненты в единую информационную цепочку:
1. у компонента Table1 свойству DatabaseName присвоим значение STUDLIST, а свойству TableName - значение students.DB.; 2. у компонента DataSource1 свойству DataSet присвоим значение Table1; 3. у компонента DBGrid свойству DataSource присвоим значение DataSource1; 4. у компонента Table1 свойству Active присвоим значение true.
После этих действий форма примет примерно такой вид, как на рисунке 3.:
Рисунок 3. Заготовка формы с полями из связанной по внешнему ключу таблицы
На этот раз редактировать будем не компонент визуализации DBGrid, а компонент набора данных Table1. На рисунке 4. показано дерево объектов формы в данный момент:
Рисунок 4. Дерево объектов формы Form1
На рисунке показаны следующие объекты: 1. база данных STUDLIST; 2. набор данных Table1, содержащий все строки (записи) из таблицы Students.DB; 3. соединенный с набором данных компонент DataSource1; 4. компонент DBGrid1, содержащий внутри себя объекты столбцов, соответствующих полям реляционной таблицы Students.DB; 5. три коллекции (набора) объектов FieldDefs, Fields и IndexDefs внутри компонента Table1.
В данный момент наибольший интерес представляет коллекция Fields, которая содержит поля набора данных. Именно в эту коллекцию будет добавлено поле просмотра (Lookup), в котором будут отображаться значения поля GroupName из таблицы Groups. Добавление полей осуществляется редактором полей, вызываемым двойным щелчком мыши на компоненте Table1:
Рисунок 5. Пустое окно редактора полей набора данных Table1 с контекстным меню
Выбрав в контекстном меню пункт Add all fields («Выбрать все поля»), поместим в компонент Table1 все поля реляционной таблицы Students.
Рисунок 6. Окно редактора полей набора данных Table1 после выбора в контекстном меню пункта Add all fields
Для всех полей, добавленных в редактор, следует в инспекторе объектов установить некоторые свойства, определяющие некоторые параметры отображения: 1. свойство DisplayLabel, определяющее в компоненте DBGrid надпись в заголовке столбца; 2. свойство Alignment, определяющее в компоненте DBGrid положение выводимых данных внутри столбца (выравнивание по центру, левому или правому краю).
Поля N и Id_Gr нет необходимости показывать, и для соответствующих столбцов в инспекторе объектов в свойстве нужно установить значение false.
Рисунок 7. Форма после настройки свойств полей DisplayLabel и Alignment
На рисунке 7 показан второй компонент Table2: он нужен для построения поля просмотра. Компонент Table2 должен быть подсоединен к таблице Groups. Для того чтобы создать поле просмотра, нужно в контекстном меню (рисунок 5) выбрать пункт «New field…» и произвести заполнение полей, как это показано на рисунке 8:
Рисунок 8. Окно добавления поля просмотра
В поле Name введено имя добавляемого поля Group. В поле Component автоматически будет введено значение Table1Group. В поле Type нужно выбрать тип поля (в данном случае Sting), и можно указать его размер. В группе переключателей нужно указать какое поле будет добавлено. Значение Data выбирается для реально существующих в таблице полей; значение Calculated – для вычислимых полей (рассчитываются на основе других полей той же таблицы); а значение Lookup – для полей просмотра (которые находятся в связанной по внешнему ключу таблице). После установки переключателя в значение Lookup, появляется возможность выбора в группе Lookup definitions. Здесь в выпадающих списках нужно выбрать: 1. поле внешнего ключа Key Fields; 2. внешнюю таблицу Dataset (в ней находится поле для просмотра); 3. примарный ключ внешней таблицы Lookup Keys; 4. поле для просмотра в DBGrid Result Field.
После подтверждения выбора и закрытия окна будет добавлено новое поле Group, которое можно увидеть в редакторе полей (рисунок 9):
Рисунок 9. Новое поле Group добавлено в набор данных Table1
Для поля Group нужно задать в инспекторе объектов свойства DisplayLabel и Alignment. Затем в компонент DBGrid1 нужно добавить поле и связать его с новым полем (свойство FieldName). Окончательный результат показан на рисунке 10.
Рисунок 10. Новое поле Group добавлено в компонент DBGrid
Следует отметить, что к набору данных можно добавлять произвольное количество полей просмотра, и не обязательно только из одной внешней таблицы.
|