|
Компонент таблицы
Компонент таблицы обеспечивает доступ
к таблице базы данных целиком, создавая набор данных,
структура полей которого полностью повторяет таблицу
БД. За счет этого компонент прост в настройке и обладает
многими дополнительными функциями, которые обеспечивают
применение табличных индексов.
Но в практике программирования работа
с таблицами целиком используется не так часто. А при
работе с серверами баз данных промежуточное ПО, используемых
технологий доступа к данным, все равно транслирует запрос
на получение табличного набора данных в простейший запрос
SQL, например:
SELECT * FROM Orders
В такой ситуации применение табличных
компонентов становится менее эффективным, чем использование
запросов.
После соединения с источником данных
(процесс подключения для каждой технологии подробно
рассматривается в части IV) необходимо задать имя таблицы
в свойстве
property TableName:
String;
Иногда в свойстве TаblеТуре
дополнительно задается тип таблицы.
Если соединение с источником данных
настроено правильно, имя таблицы можно выбрать из выпадающего
списка свойства TableName.
Преимуществом табличного компонента
является использование индексов, которые ускоряют работу
с таблицей. Все индексы, созданные в базе данных для
таблицы, автоматически загружаются в компонент. Их параметры
доступны через свойство
property IndexDefs:
TIndexDefs;
Подробно класс TIndexDefs
рассматривается ниже в этой главе.
При работе с компонентом разработчик
имеет возможность управлять индексами.
Существующий индекс можно выбрать в
Инспекторе объектов в списке свойств
property IndexName:
String;
или использовать свойство
property IndexFieldNames:
String;
в котором можно задать произвольное
сочетание имен индексированных полей таблицы. Имена
полей разделяются символом точкой с запятой. Таким образом,
при помощи свойства IndexFieldNames
можно создавать составные индексы.
Свойства IndexName
и IndexFieldNames нельзя использовать
одновременно.
Число полей, используемых в текущем
индексе табличного компонента, возвращает свойство
property IndexFieldCcunt:
Integer;
А свойство
property IndexFields:
[Index: Integer]: TField;
представляет собой индексированный
список полей, входящих в текущий индекс:
for i := 0 to MyTable.IndexFieldCount
— 1 do MyTable.IndexFields[i].Enabled := False;
Для выполнения операций с таблицами
и индексами целиком в табличных компонентах реализовано
несколько методов.
Метод
procedure CreateTable;
создает новую таблицу в базе данных,
используя заданное имя и описание полей, и индексов
из свойств TFieldDefs и TindexDefs.
Если таблица с таким именем уже имеется в базе данных,
то она будет уничтожена и создана заново с новой структурой
и данными.
Метод
procedure EmptyTable;
удаляет из набора данных и таблицы
базы данных все записи.
Метод
procedure DeleteTable;
уничтожает таблицу базы данных, связанную
с компонентом. Набор данных должен быть закрыт.
Метод
type
TIndexOption = (ixPrimary,
ixUnique, ixDescending, ixCaselnsensitive,
ixExpression, ixNonMaintained);
TIndexOptions = set
of TIndexOption;
procedure Addlndex(const
Name, Fields: String; Options: TIndexOptions, const
DescFields: String='');
добавляет к таблице БД новый индекс.
Параметр Name задает имя индекса.
В параметре Fields через точку
с запятой определяются имена полей, входящих в индекс.
Параметр DescFields задает описание
индекса из констант, объявленных в типе
TIndexOption.
Метод
procedure Deletelndex(const
Name: string);
уничтожает индекс.
Кроме этого, табличные компоненты содержат
свойства и методы, описываемые в гл. 14.
|