![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Индексы Paradox [D5, Paradox]
grifon-nn © (2003-10-21 22:27:00)
Подскажите пожалуйста, мне нужно сделать автоматическое восстановление индексов в БД при загрузке программы. Чем можно воспользоваться? Может есть какие компоненты?
grifon-nn (2003-10-22 19:07:00) [1]
спасибо за совет. все получилось
TP (2003-10-22 17:59:00) [2]
1. Прочитать информацию о индексах.
2. Удалить индексы.
3. Перевести Autoincremnt в Integer.
4. Создать индексы заново.
5. Перевесди Integer в Autoincremnt.
Работает долго, но надёжно.
grifon-nn (2003-10-22 17:49:00) [3]
Да, значит скорее всего он. А как это можно исправить программным путем?
Anatoly Podgoretsky (2003-10-22 17:41:00) [4]
Нарушением например первичного ключа, если в качестве него используется автоинкриментное поле. Сбился счетчик.
grifon-nn (2003-10-22 17:38:00) [5]
Mike Kouzmine © (22.10.03 17:31) [4]
А в чем?
Когда я таблица пустая (или восстанвленная другим образом), то всё добавляется. А так появляется ошибка...
А чем может быть ещё вызвано такое сообщение?
Mike Kouzmine (2003-10-22 17:31:00) [6]
А может восстановил, но дело не в индексах?
grifon-nn (2003-10-22 17:25:00) [7]
Pat © (21.10.03 23:59) [1]
Спасибо, письмо получил. Таблицу он вроде как восстановил, но при попытке добавить новую запись, он выдает ошибку "Key violation". Т.е. получается что индексы он не восстановил :(
grifon-nn (2003-10-22 02:50:00) [8]
написал такой код:
TblName.Exclusive := True;
TblName.Open;
try
Check(DbiRegenIndexes(TblName.Handle));
finally
TblName.Close;
TblName.Exclusive := FALSE;
end;
Но при попытке восстановить индексы, вываливается сообщение: "must use baseorder for this operation"
Подскажите что я ещё не сделал. Может надо ещё что-то закрыть/открыть...
Pat (2003-10-21 23:59:00) [9]
Ой блин...БД и так грузится долго, а еще и восстановление индексов. Делай восстановление опционально - если не можешь подключиться к какой-либо таблице или сделай отдельный exe"шник для восстановления базы.
P.S. Можно юзать TUtil32.dll - сама все за тебя сделает. Есть прога с исходниками..мыль - скину