Описание индекса. Использование описаний индексов.
Параметры каждого индекса набора данных представлены в классе TindexDef, а их совокупность для набора данных содержится в свойстве IndexDefs класса TDataSet.
Свойство:
property Name: String;
Определяет название индекса.
Список всех полей индекса содержится в свойстве:
property Fields: String;
Поля разделяются точкой с запятой.
Свойство:
property CaselnsFields: String;
Содержит список полей, регистр символов в которых при сортировке не учитывается. Поля разделяются точкой с запятой. Все поля из этого списка должны входить в свойство Fields. В наборе данных по умолчанию используется сортировка записей с учетом регистра символов. Но некоторые серверы БД допускают комбинированную сортировку по полям с учетом регистра и без.
Свойство:
property DescFields: String;
Содержит список полей через точку с запятой, которые сортируются в обратном порядке. Все поля из этого списка должны входить в свойство Fields. По умолчанию все поля сортируются в прямом порядке. Некоторые серверы БД поддерживают одновременную сортировку полей в прямом и обратном порядке.
Свойство:
property GroupingLevel: Integer;
Позволяет ограничить область применения индекса. Если значение этого свойства равно нулю, индекс упорядочивает все записи набора данных. В противном случае действие индекса распространяется на группы записей, имеющих одинаковые значения для того числа полей, которое задано этим свойством.
Параметры индекса определяются свойством:
property Options: TIndexOptions;
Для индекса возможны сочетания следующих параметров:
- ixPrimary – первичный индекс;
- ixunique – значения индекса уникальны;
- ixDescending – индекс сортирует записи в обратном порядке;
- ixCaseinsensitive – индекс сортирует записи без учета регистра символов;
- ixExpression – в индексе используется выражение (для индексов dBASE);
- ixNonMaintained – индекс не обновляется при открытии таблицы.
Метод:
procedure Assign(ASource: TPersistent); override;
Заполняет свойства объекта значениями аналогичных свойств объекта ASource.
Использование описаний индексов
Описания индексов наряду с описаниями полей (см. гл. 13) также используются при создании новых таблиц БД. Для каждого планируемого индекса перед вызовом метода CreateTable необходимо создать или скопировать из существующего набора данных соответствующее описание. Тогда при создании таблицы индексы будут добавлены автоматически:
with Tablel do begin DatabaseName: = 'DBDEMOS'; TableType: = ttParadox; TableName: = 'DemoTable'; … {Создание описаний полей} … with IndexDefs do begin Clear; AddlndexDef; with Items[0] do begin Name: = ' '; Fields: = 'Fieldl'; Options: = [ixPrimary, ixUnique]; end; AddlndexDef; with Items[1] do begin Name: = 'Secondlndex'; Fields: = 'Fieldl;Field2'; Options: = [ixCaselnsensitive]; end; end; CreateTable; end;
При создании описаний индексов использован метод AddlndexDef, который при каждом вызове добавляет к списку Items объекта TIndexDefs новый объект TindexDef. Таким образом сначала создается первичный индекс (в таблицах Paradox он не имеет имени), затем вторичный индекс SecondIndex. Для каждого описания обязательно определяются составляющие индекс поля и параметры индекса (свойства Fields и options).