Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Разработка web-приложений




Работа со связанными таблицами

Между отдельными таблицами БД может существовать связь, которая организуется через поля таблиц. Поля связи обязательно должны быть индексированными. Связь между таблицами определяет отношение подчиненности, при котором одна таблица является главной (родительской), а другая – подчиненной (дочерней или детальной). Обычно используется связь «один ко многим», когда одной записи в главной таблице может соответствовать несколько записей в подчиненной таблице.

Для организации связи между таблицами в подчиненной таблице используются свойства (в Object Inspector):

· MasterSource – источник данных главной таблицы;

· IndexName – текущий индекс;

· IndexFieldNames – поле или поля связи текущего индекса подчиненной таблицы;

· MasterFields – поле или поля индекса главной таблицы.

Для таблиц MySQL в качестве полей связи могут использоваться поля главного индекса, а для подчиненной таблицы – поля вторичного индекса.

Рассмотрим пример вывода данных из главной и подчиненной таблиц
(рис. 18). Для организации связи в качестве поля связи главной таблицы берется автоинкрементное поле Kod уникального кода. По этому полю построен главный ключ, значение которого автоматически формируется при добавлении новой записи и в пределах таблицы является уникальным. В подчиненной таблице полем связи является целочисленное поле KodPe, по которому построен вторичный индекс.

 

Рис. 18. Форма связи между таблицами «один ко многим»

В верхней части формы (рис. 18) выводится список всех подвижных единиц (ПЕ), в нижней – сведения о ремонтах выбранной ПЕ. Для наглядности в наборы данных включены все поля таблиц, которые отображаются в компонентах DBGrid. При этом названия заголовков столбцов совпадают с названиями полей.

В рассмотренном примере связь между таблицами устанавливается при выполнении приложения. Обычно таблицы связывают на этапе разработки через Инспектор объектов. При этом для установки свойства MasterFields можно использовать редактор полей связи (Field link Designer). В списке Detail Fields выбирается поле подчиненной таблицы, а в списке Master Fields – поле главной таблицы (рис. 19).

Рис. 19. Редактор полей связи

После нажатия кнопки Add выбранные поля связываются, что отображается в списке Joined Fields. Заполнение свойства MasterFields происходит после закрытия окна при нажатии кнопки OK.

В Delphi для работы с наборами данных таблиц применяются компоненты Table, Query, Decision Query и StoredProc.

Компонент Table представляет набор данных, который в некоторый момент времени может быть связан с одной таблицей БД. Расположение БД, с таблицами которой выполняются операции, указывает свойство DataBaseName типа String (рис. 20). Значением свойства является имя каталога, в котором расположены БД, или псевдоним, ссылающийся на этот каталог.

Связь между таблицей и компонентом Table устанавливается через его свойство TableName типа TFileName, которое определяет имя таблицы (и имя файла, содержащего данные). По умолчанию в набор данных Table попадают все записи связанной с ним таблицы. Для отбора данных можно использовать фильтрацию.

Для того чтобы запретить пользователю изменять записи, можно использовать свойство ReadOnly типа Boolean. По умолчанию это свойство имеет значение False. Это означает, что пользователь может редактировать записи.

 

Рис. 20. Свойства компонента Table в инспекторе объектов

Установить текущий индекс можно с помощью свойства IndexName типа String. Текущий индекс выбирается из списка индексов, которые были заданы при создании таблицы. На этапе разработки приложения все возможные значения свойств IndexName содержат раскрывающиеся списки, доступные в Инспекторе объектов.

Наборы данных могут находиться в открытом или закрытом состоянии, на что указывает свойство Active типа Boolean. Если свойству Active установлено значение True, то набор данных открыт. Если значение свойства Active равно False (по умолчанию), то набор данных закрыт и его связь с БД разорвана.

Для вывода содержимого набора данных в табличном виде удобно использовать сетку, представленную компонентом DBGrid. Внешний вид сетки соответствует внутренней структуре таблицы БД и набора данных, при этом строке сетки соответствует запись, а столбцу – поле.

Компонент DataSource – источник данных. Используется как промежуточное звено между набором данных и визуальными компонентами, с помощью которых пользователь управляет этим набором данных. Для указания набора данных, с которым связан источник данных, используется свойство DataSet типа TDataSet последнего. Визуальные компоненты связаны с источником данных через свои свойства DataSource при проектировании в Инспекторе объектов.

Специальные компоненты Delphi позволяют размещать информацию из БД непосредственно на HTML-страницы.

При разработке WEB-приложений используются компоненты палитры компонентов, расположенных на странице Internet (рис. 21, 22). Эти компоненты автоматически генерируют HTML-страницы.

 

Рис. 21. Страница Internet палитры компонентов на Delphi6

 

Рис. 22. Страница Internet палитры компонентов на Delphi7

Создадим новое приложение. На приложении разместим компоненты QueryTableProducer1, Query1, DataSource1, Database1, Memo1, DBGrid1
(рис. 23).

Рис. 23. Компоненты на форме приложения




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 394; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.