Как да преиндексирате таблици
Уважаеми майстори, правя възстановяване на файлове от архив, как мога да преиндексирам таблици. Благодаря.
По-добре е по този начин Проверка (DbiRegenIndexes (Tbl.Handle));
Проверка (DbiRegenIndexes (Таблица. Ръкохватка)); се кара, че Check не е декларирана променлива, включих модула DbiProcs в употреба, все още се кара, какво може да е?
Проверката се декларира в Dbtables
2kettle1
Това е за парадокса, намиране и поправяне на Dbf.
функция ReindexBase (aDB: TDatabase): boolean;
вар
_i: цяло число;
_list: tStrings;
започнете
Резултат: = вярно;
aDB.CloseDataSets;
_list: = tStringList.Create;
опитвам
Session.GetTableNames (aDB.DatabaseName, "* .db", false, false, _list);
за _i: = 0 до _list.Count - 1 do
с TTable.Create (nil) do
опитвам
Име на базата данни: = aDB.DatabaseName;
TableType: = ttParadox;
Изключително: = вярно;
Име на таблица: = _list [_i];
опитвам
Активно: = вярно;
Проверка (dbiRegenIndexes (Handle));
с изключение
на E: Изключението все пак започва
MessageDlg ("Грешка при повторно индексиране:" + E.Message, mtError, [mbOk], 0);
Резултат: = невярно
край
край
накрая
Близо;
Безплатно
край
накрая
_list.Безплатно
край
край;
благодаря, сега при стартиране се кара, че не може да отвори масата.
Правя това:
Таблица 1. Изключително: = Вярно;
Таблица 1. Отворена;
Проверка (dbiRegenIndexes (Таблица 1. Ръкохватка));
Няма грешка в кода
[7] чайник1 (16.02.04 12:32)
означава, че масата вече е отворена някъде, например при делфини.
да, вече затварям всичко, преди да индексирам, точно както при копиране, пак се кара.
как точно псува? казва, че не може да се отвори в изключителен режим? тогава не затваряте всичко. може би тази таблица е отворена от друга програма. на света няма чудеса. и ако има такива, тогава няма да получите помощ тук как да се справите с тях.:))