Список имен всех индексов можно получить при помощи метода GetlndexNames.
( Примечание ^
Изменение текущего индекса можно осуществлять без отключения набора данных, поэтому в приложениях очень удобно делать сортировку данных по индексам. Такой метод смены индексов называется индексацией "налету".
После установки индекса количество полей в индексе передается в свойство IndexFi eldCount.
Список описаний индексов
Информация об индексах набора данных содержится в свойстве класса
TDataSet
property IndexDefs: TindexDefs;
В нем для каждого индекса создается структура TindexDef. Доступ к информации об индексах осуществляется через свойство
property Items [Index: Integer] : TmdexDef; default; являющееся списком объектов TindexDef.
Объекты типа TindexDef можно добавлять в список при помощи метода
function AddlndexDe f: TindexDef ;
Поиск объекта описания индекса осуществляет метод
function Find(const Name: String): TindexDef;
который возвращает найденный объект по заданному в параметре Name имени индекса.
Пара методов
function FindlndexForFields(const Fields: string): TmdexDef;
function GetlndexForFields (const Fields: String;
Caselnsensitive: Boolean): TindexCfef;
находит объект описания индекса по списку полей, входящих в индекс. Если индекс не найден, ищется первый индекс, начинающийся с указанных полей. Первый из этих двух методов в случае неудачного поиска генерирует исключительную ситуацию EDatabaseError, а второй возвращает nil.
Список indexDefs обновляется автоматически при открытии набора данных. Но метод
procedure Update;
reintroduce;
обновляет список описаний индексов без открытия набора данных.
Описание индекса
Параметры каждого индекса набора данных представлены в классе TindexDef, а их совокупность для набора данных содержится в свойстве
IndexDefs класса TDataSet.
Свойство
property Name: String; определяет название индекса.
Список всех полей индекса содержится в свойстве
property Fields: String;
Поля разделяются точкой с запятой.
Свойство
property CaselnsFields: String;
содержит список полей, регистр символов в которых при сортировке не учитывается. Поля разделяются точкой с запятой. Все поля из этого списка должны входить в свойство Fields. В наборе данных по умолчанию используется сортировка записей с учетом регистра символов. Но некоторые серверы БД допускают комбинированную сортировку по полям с учетом регистра и без.
Свойство
property DescFields: String;
содержит список полей через точку с запятой, которые сортируются в обратном порядке. Все поля из этого списка должны входить в свойство Fields. По умолчанию все поля сортируются в прямом порядке. Некоторые серверы БД поддерживают одновременную сортировку полей в прямом и обратном порядке.
Свойство
property GroupingLevel: Integer;
позволяет ограничить область применения индекса. Если значение этого свойства равно нулю, индекс упорядочивает все записи набора данных. В противном случае действие индекса распространяется на группы записей, имеющих одинаковые значения для того числа полей, которое задано этим свойством.