Очень часто требуется решить проблему уникальности индекса для таблиц - не
всегда можно дополнять ключ меткой времени. Для этого можно использовать метод
TTable.OnPostError. При создании таблицы добавляем поле Ax типа ftInteger или
ftSmallInt, которое будет замыкать ключевые поля. К примеру, необходимо создать
таблицу платежей абонентов, в которой могут существовать несколько платежей,
проведенных в один день.
При попытке использования AddIndex я получаю ошибку 'Invalid Index/Tag name.
(Неверное имя Индекса/Тэга) Index: cusname'. Но у меня нет никаких проблем с
этим именем при использовании DeleteIndex.
Для dBase-таблицы встроенными средствами ты не перестроишь индекс, если его
нет. Для этой цели мне пришлось написать процедуру для физического удаления
признака индексации в самом dbf-файле и после её применения добавлять индексы
заново.
Получить во время выполнения приложения список индексов, ассоциированных с
таблицей также просто, как вызвать метод GetIndexNames для компонентов TTable,
TQuery или TStoredProc. Метод GetIndexNames возвращает список, доступный в
наборе данных для компонента TStrignList, установленного на форме (для нашего
примера), или других визуальных компонентов, таких как TListBox, через свойство
Items: