Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

Индексы Paradox   Найти похожие ветки 

 
grifon-nn   (2003-10-21 22:27) [0]

Подскажите пожалуйста, мне нужно сделать автоматическое восстановление индексов в БД при загрузке программы. Чем можно воспользоваться? Может есть какие компоненты?


 
Pat   (2003-10-21 23:59) [1]

Ой блин...БД и так грузится долго, а еще и восстановление индексов. Делай восстановление опционально - если не можешь подключиться к какой-либо таблице или сделай отдельный exe"шник для восстановления базы.

P.S. Можно юзать TUtil32.dll - сама все за тебя сделает. Есть прога с исходниками..мыль - скину


 
grifon-nn   (2003-10-22 02:50) [2]

написал такой код:

TblName.Exclusive := True;
TblName.Open;
try
Check(DbiRegenIndexes(TblName.Handle));
finally
TblName.Close;
TblName.Exclusive := FALSE;
end;


Но при попытке восстановить индексы, вываливается сообщение: "must use baseorder for this operation"

Подскажите что я ещё не сделал. Может надо ещё что-то закрыть/открыть...


 
grifon-nn   (2003-10-22 17:25) [3]

Pat © (21.10.03 23:59) [1]
Спасибо, письмо получил. Таблицу он вроде как восстановил, но при попытке добавить новую запись, он выдает ошибку "Key violation". Т.е. получается что индексы он не восстановил :(


 
Mike Kouzmine   (2003-10-22 17:31) [4]

А может восстановил, но дело не в индексах?


 
grifon-nn   (2003-10-22 17:38) [5]

Mike Kouzmine © (22.10.03 17:31) [4]
А в чем?
Когда я таблица пустая (или восстанвленная другим образом), то всё добавляется. А так появляется ошибка...
А чем может быть ещё вызвано такое сообщение?


 
Anatoly Podgoretsky   (2003-10-22 17:41) [6]

Нарушением например первичного ключа, если в качестве него используется автоинкриментное поле. Сбился счетчик.


 
grifon-nn   (2003-10-22 17:49) [7]

Да, значит скорее всего он. А как это можно исправить программным путем?


 
TP   (2003-10-22 17:59) [8]

1. Прочитать информацию о индексах.
2. Удалить индексы.
3. Перевести Autoincremnt в Integer.
4. Создать индексы заново.
5. Перевесди Integer в Autoincremnt.
Работает долго, но надёжно.


 
grifon-nn   (2003-10-22 19:07) [9]

спасибо за совет. все получилось



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.034 c
3-40960
Andrey V.
2003-10-16 21:34
2003.11.13
Позиционирование в гриде


1-41252
Alex(is)
2003-10-31 15:53
2003.11.13
Вопрос про WndProc


1-41586
Василиск
2003-10-27 11:37
2003.11.13
Delphi и Excel (проблема с последним)


3-41078
Chaked
2003-10-23 16:30
2003.11.13
Доступ к записям


3-40934
S.A.S.
2003-10-17 16:36
2003.11.13
DBExpress





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский