Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.22;
Скачать: CL | DM;

Вниз

Как проиндексировать базу   Найти похожие ветки 

 
NDR   (2002-07-31 12:10) [0]

Упаковать-то, упаковали. СПАСИБО = Leran2002!

А как програмно переиндексировать таблицу.
чтоб потом выполнить упаковку.

Вообще под индексацией что понимается ?
я незнаю процесса.

мне кажется.но наверно это совсем не так.
что. индексы удаляются, а затем пересоздаются.

чё написал? сам непонял =)

УВАЖАЕМЫЕ МАСТЕРА Расскажите пожалуйста как провести ИНДЕКСАЦИЮ
базы. (переиндексацию).

С Уважением и неисчерпаемой благодарность, NDR


 
Leran2002 ©   (2002-07-31 13:07) [1]

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

Uses BdeUtils;

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


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

Uses BDE;

// выцарапано из RXLib
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;

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


 
NDR   (2002-08-01 07:58) [2]

Сильно благодарен! =)


 
Leran2002 ©   (2002-08-01 08:40) [3]

Всегда рад помочь БРАТЬЯМ по РАЗУМУ!!! ;-))


 
Tornado ©   (2002-08-01 11:49) [4]

Регенерация индексов таблицы Базы Данных (проверялось только на файлах DBF)
Нужно подключить модули :
DBTables, DB, dbiProcs,DbiErrs,dbiTypes;
Здесь, если NrErr>0 , то вывод на экран сообщения об ошибке (если была ошибка).

function TableRegenIndexes(NrErr : byte;Tbl : TTable) : Boolean;
Var
YesEx,YesAct : byte;
S : String;
Res,Res1 : DBIResult;
CCC : array[0..255] of Char;
begin
YesEx:=0;
if Tbl.Exclusive then YesEx:=1;
YesAct:=0;
if Tbl.Active then YesAct:=1;
Tbl.Active:=FALSE;
Tbl.Exclusive:=TRUE;
Tbl.Active:=TRUE;
Res:=DbiRegenIndexes (Tbl.Handle);
Tbl.Active:=FALSE;
if YesEx<=0 then Tbl.Exclusive := FALSE;
if YesAct>0 then Tbl.Active:=TRUE;

if Res=0 then begin
Result:=TRUE;
end
else begin
if NrErr>0 then begin
Res1:=DbiGetErrorString (Res,CCC);
Str(Res,S);
S:="Ошибка реген.индекс.: "+S+" -> "+StrPAS(CCC)+" для : "+Tbl.TableName;
MessageBeep(mb_IconHand);
MessageDlg(S,mtError,[mbOk],0);
end;
end;
end;


еще вариант :)



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

Текущий архив: 2002.08.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
1-71229
Администратор
2002-08-11 16:25
2002.08.22
ListView


1-71198
DN
2002-08-09 12:44
2002.08.22
Как запустить из программы *.rar файл, чтобы он открылся WinRar


3-71027
Сергей.
2002-07-31 14:02
2002.08.22
Доступ к полям таблицы


3-71038
billybons
2002-07-31 09:44
2002.08.22
добавление записи в Grid


1-71095
Uran
2002-08-09 16:35
2002.08.22
Нестандартное форматирование