Delphi 3 и создание приложений баз данных

       

Установка текущего индекса ТТаЫе


То, какой индекс является текущим для данного НД (компонент TTable), в ряде случаев имеет важное значение.

Во-первых, текущий индекс определяет поля, по которым будет отсортирован данный НД. Это важно как с точки зрения доступа к данным, так и с точки зрения их визуализации: представление данных должно быть максимально информативным. Плюс к этому пользователь должен быстро находить нужную ему информацию и видеть группировки записей внутри НД.

Во-вторых, многие методы и свойства TTable работают напрямую с текущим индексом. Это, например, метод SetRange для фильтрации записей в TTable и связанные с ним; методы для поиска записи, удовлетворяющей условию - FindKey, FindNearest и другие.

Для указания индекса, по которому будет производиться сортировка в НД, связанном с данным компонентом TTable, имеются два взаимоисключающих способа.

1) Путем занесения имени индекса в свойство property IndexName: string; например:

Tablel.IndexName := 'INDEX_BY_FIO';

Пример.

Для описанного выше примера заполнения ListBox именами доступных индексов сделаем для Table текущим индекс, имя которого является текущим в ListBoxl:

Tablel.IndexName := ListBoxl.Items[ListBox1.Itemlndex];

В силу того, что имя главного (первичного) индекса для Paradox-таблиц не выводится, данный фрагмент кода может сделать текущим только вторичный индекс.

2) Путем занесения списка индексных полей в свойство property IndexFieldNames: string;

В случае указания нескольких полей их имена разделяются точкой с запятой. Пример:

Table1.IndexFieldNames := 'FIO; Doljnost';

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



Содержание раздела