![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Задолбали индексы в Paradox e [D5, Paradox]
Weare © (2002-06-21 17:27:00)Подскажите, пожалуйста. У меня часто при работе программы выскакивает "Index is out of date". В Desktope это исравлял, но ведь хочеться, чтобы программа сама это исправляла.(кстати почему вообще это так часто появляется)
Тогда я решил вставить в код программы перегенерацию индексов:
DataModule2.Users.Exclusive:=True;
DataModule2.Users.Open;
Check(dbiRegenIndexes(DataModule2.Users.Handle));
Для этой таблицы все нормально отрабатывает, а для другой пишет:
"Must use baseorder for this operation".Подскажите, в чем тут дело и есть ли другое решение проблемы.
Заранее огромное спасибо.
MEgor (2002-06-25 02:56:00) [21]У меня похожая ситуация. Делаю Table1.EmptyTable - и после этого
получаю "Index is out of date". В этом индексе присутствует поле типа Data. На другом индексе такого не возникало (пока). Решить проблему не смог.
Пришлось удалять записи последовательным перебором.
Еще. у одной таблицы два индекса.
Добавляю в нее порядка 500 тыс. записей - ни один индекс не изменился, т.е. оба как были 2 кб., так и остались.
У другой таблицы из двух индексов меняется только один.
Короче говоря - бардак с этим парадоксом.
Weare (2002-06-24 14:11:00) [22]Подожди VAleksey, ты что хочешь сказать, что индексы слетают из-за переполнения кэша. Объясни, пожалуйста, поподробнее...
VAleksey (2002-06-24 13:34:00) [23]Кэш почаще сбрасывай. ( dbiSaveChages )
Weare (2002-06-24 12:49:00) [24]Спасибо всем,
TTable я итак использую, не помогало.
А вот ответ Виктора действительно помог (спасибо огромное, а то я зациклился на этой проблеме)- все работает.
Кстати, может кто подскажет почему вообще так часто портятся индексы (или индексные файлы).
Идея моей проги такая: у меня в моей проге к базе (около 20 таблиц) по сетке обращаются несколько человек. И в зависимости от введеного пароля таблицы фильтруются. И затем один человек с правами админа работает со всей базой.
Виктор (2002-06-24 10:40:00) [25]просто перед переиндексацией установи
DataModule2.Users.IndexName := "";
VAleksey (2002-06-24 08:16:00) [26]Base order означает непосредственный (прямой) доступ к таблице.
Берешь (лучше создаешь) новый объект TTable назначаешь ему имя таблицы и только затем вызываешь dbiRegenIndexes
Weare (2002-06-22 14:20:00) [27]Речь идет об индексах. Хотя первичные ключи у меня типа autoincrement.
MsGuns (2002-06-21 19:47:00) [28]Речь идет об индексах или первмчных ключах (Primary) ?