Форум — Ответы     (  К темам )
 ?  Владимир: Индексирование существующих таблиц (16-01-2003 22:01:41)
Подскажите пожайлуста, как в C++Builere 5 сделать индексирование существующей таблицы.
Т.е. есть таблица с данными, индексов никаких не создавалось.
Необходимо проиндексировать таблицу по текстовому полю,
потом, например, поработать в TDBGrid,
по завершению удалить индекс, который используется очень редко.

Желательно кусочек кода.
Всем спасибо!
 Павел (17-01-2003 09:04:33)
Table1->AddIndex(...
 Владимир (17-01-2003 19:44:06)
В этом месте и выдает ошибку!
 vadoo (17-01-2003 20:59:17)
А не проще ли создать индекс и пусть себе будет, он не мешает.
Работай с TQuery там индексы не нужны.
 Павел (17-01-2003 21:15:09)
А какую ошибку выдает, приведите код программы, текст ошибки и какая таблица — Paradox, dBase ... ?

Индексы все равно нужны, даже если с Query
Кто вам сказал что компонент Query их не использует ?
 Владимир (18-01-2003 20:02:15)
Таблица Paradox. Вней поле Name — строкового типа
Если сделать просто так:
Tabl->AddIndex("Name", "Name", TIndexOptions() << ixUnique << ixCaseInsensitive, "Name");
то в этой строке ошибка: Table cannot be opened for exclusive use.

А если так:
Tabl->Close();
Tabl->Exclusive = true;
Tabl->AddIndex("Name", "Name", TIndexOptions() << ixUnique << ixCaseInsensitive, "Name");
Tabl->Exclusive = false;
Tabl->Open();
Tabl->Active = true;
Tabl->IndexName = "Name";
...
Делаем что-то, но нет индекса
...
Tabl->DeleteIndex("Name"); Пишет: "Table is not indexed."