Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Переиндексация dbf [D5, dBase, FoxPro]


poma121 ©   (2002-08-09 16:32:00) 

Есть две одинаковые таблицы, но с разными данными.Подключаю то одну то другую как переиндекировать........
Заранее благодарен.


Desdechado   (2002-08-10 18:48:00) [1]

подключай индекс из той таблицы, которая активна в данный момент - и он будет актуален


elv   (2002-08-09 17:32:00) [2]

Если RXLiba нет, удали index и создай заново.


Leran2002   (2002-08-09 16:45:00) [3]

Если у вас установлена библиотека RXLib то переиндексацию можно сделать так:

Uses BdeUtils;

procedure TForm1.Button2Click(Sender: TObject);
begin
ReindexTable(Table1);
end;

Если же у вас RXLib не установлена, то вот вам функция переиндексации:
Uses BDE;

procedure ReindexTable(Table: TTable);
var
WasActive: Boolean;
WasExclusive: Boolean;
begin
with Table do begin
WasActive := Active;
WasExclusive := Exclusive;
DisableControls;
try
if not (WasActive and WasExclusive) then Close;
try
Exclusive := True;
Open;
Check(dbiRegenIndexes(Handle));
finally
if not (WasActive and WasExclusive) then begin
Close;
Exclusive := WasExclusive;
Active := WasActive;
end;
end;
finally
EnableControls;
end;
end;
end;

При тестировании данного примера проект также необходимо закрыть, а то Дельф будет блокировать таблицу.
При переиндексации все имеющиеся индексы таблицы создаются по новой.
Надеюсь помог.


Наверх

Титульная страница Поиск, карта сайта Написать письмо