Наряду с описываемыми в предыдущих главах свойствами и методами,
стандартный набор данных Delphi инкапсулирует ряд дополнительных механизмов,
облегчающих управление записями и полями. К ним относятся такие полезные функции,
как быстрое перемещение по записям, поиск нужной записи по значениям полей, дополнительная
фильтрация записей набора данных без использования возможностей СУБД и т. д. Большинство
этих механизмов применяют в своей работе индексы таблиц БД.
Связанные
таблицы В рамках одного проекта таблицы БД можно связывать отношениями "один-
ко- многим" и "многие- ко- многим", при этом отношения обязательно
устанавливаются между индексированными полями двух таблиц.
Отношение
"один-ко-многим" Для установления отношения "один- ко- многим" в
наборе данных предназначены два свойства — Mastersource и MasterFieids, которые
задаются для подчиненной таблицы. Набор данных главной таблицы не требует никаких
дополнительных настроек и заданная связь будет работать только при перемещениях
по записям главной таблицы
Отношение "многие-ко-многим"
Отношение "многие- ко- многим" отличается тем, что подчиненная таблица
еще раз связывается в качестве главной с другой подчиненной таблицей аналогичной
последовательностью действий, как и в отношении "один- ко- многим".
Поиск данных В наборе данных реализованы
два способа поиска записей по заданным значениям полей.
Поиск
по индексам Для организации индексного поиска к набору данных должен быть
подключен индекс (свойства IndexName ИЛИ IndexFieldNames).
Поиск
в диапазоне Индексный поиск можно организовать группой методов, подобно созданию
диапазонов. Метод setKey переводит набор данных в состояние dsSetKey, затем должно
следовать присваивание ключевым полям значений для поиска.
Поиск
по произвольным полям Для поиска по произвольной выборке полей можно использовать
методы Locate и Lookup.
Фильтры Применение
фильтра основано всего на двух основных свойствах и одном вспомогательном. Текст
фильтра должен содержаться в свойстве Filter, a свойство Filtered включает и выключает
фильтр. Параметры фильтра определяются свойством FilterOptions.
Быстрый
переход к помеченным записям Закладки, как инструмент работы с записями набора
данных, позволяют осуществлять быстрое перемещение на нужную запись. Набор данных
может содержать неограниченное число закладок, каждая из которых представляет
собой указатель
Диапазоны В наборе данных,
помимо фильтров, имеется еще одно средство отбора записей. Группа методов позволяет
на основе использования индексов отбирать в набор данных только те записи, значения
индексированных полей которых (для текущего индекса) соответствуют диапазону заданных
величин.
Компоненты отображения данных
До этого момента
мы рассмотрели аспекты создания приложений баз данных, касающиеся организации
доступа к данным и создания в приложениях наборов данных. Теперь более подробно
остановимся на вопросах отображения данных в приложениях
(интерфейс приложений).
Табличное представление данных
Этот компонент инкапсулирует двумерную таблицу, в которой строки представляют
собой записи, а столбцы — поля набора данных.
Компонент
TDBGrid внешне напоминает компонент TDBGrid, но никак не связан с классом
TCustomDBGrid, а наследуется напрямую от класса TWinControl.
Компонент
TDBCtrlGrid Перемещение или навигация по записям набора данных может осуществляться
несколькими путями. Например, в компонентах TDBGrid и TDBCtrlGrid, которые отображают
сразу несколько записей набора данных, можно использовать клавиши вертикального
перемещения курсора или вертикальную полосу прокрутки.
Представление отдельных
полей Большинство компонентов отображения данных предназначено для представления
данных из отдельных полей. Для этого все они имеют свойство DataField, которое
указывает на требуемое поле набора данных.
Компонент
TDBText Этот компонент представляет собой статический текст, который отображает
текущее значение некоторого поля связанного набора данных. При этом данные можно
просматривать в режиме "только для чтения".
Компонент
TDBEdit Компонент представляет собой стандартный однострочный текстовый редактор,
в котором отображаются и изменяются данные из поля связанного набора данных.
Компонент TDBCheckBox Компонент представляет собой
почти полный аналог обычного флажка (компонент TCheckBox) и предназначен для отображения
и редактирования любых данных, которые могут иметь только два значения. Это может
быть логический тип данных или любые строковые значения, но поле может принимать
значения только из двух строк.
Компонент TDBRadioGroup
Компонент представляет собой стандартную группу переключателей, состояние которых
зависит от значений поля связанного набора данных. В поле можно передавать фиксированные
значения, связанные с отдельными переключателями в группе.
Компонент TDBComboBox Компонент
отображает текущее значение связанного с ним поля набора данных в строке редактирования,
при этом значение поля должно совпадать с одним из элементов разворачивающегося
списка.
Компонент TDBMemo Компонент представляет
собой обычное поле редактирования, к которому подключается поле с типом данных
Memo или BLOB. Основное его преимущество — возможность одновременного просмотра
и редактирования нескольких строк переменной длины. Компонент может отображать
только строки, которые целиком видны по высоте.
Компонент
TDBImage Компонент предназначен для просмотра изображений, хранящихся в базах
данных в графическом формате.
Компонент TDBRichEdit
Компонент предоставляет возможности полноценного текстового редактора для просмотра
и изменения текстовых данных, хранящихся в связанном поле набора данных. Поле
должно содержать информацию о форматировании текста.
Синхронный
просмотр данных При разработке приложений для работы с базами данных часто
возникает необходимость в связывании двух наборов данных по ключевому полю.
Механизм синхронного просмотра Непосредственным
предком компонентов синхронного просмотра данных является класс TDBLookupControl,
который инкапсулирует список значений для просмотра и сам механизм синхронного
просмотра.
Компонент TDBLookupListBox Компонент
представляет собой список значений поля синхронного просмотра для поля, заданного
свойством DataField, из набора данных DataSource.
Компонент
TDBLookupComboBox Компонент представляет собой комбинированный список значений
поля синхронного просмотра для поля, заданного свойством DataField, из набора
данных DataSource.
Графическое представление
данных Для представления данных из некоторого набора данных в виде графиков
различных видов предназначен компонент TDBChart