Главная страница
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.011 c
1-71191
Sour
2002-08-09 09:52
2002.08.22
Помогите с алгоритмом


14-71353
Nostradamus
2002-07-27 03:41
2002.08.22
А я Warcraft 3 прошёл


3-70961
Прохожий
2002-08-02 12:15
2002.08.22
Уважаемые Мастера. Как получить список доступных в сети MSSQL-сер


4-71424
Sour
2002-06-19 07:03
2002.08.22
IBSever запуск и закрытие?


1-71096
X-jedy
2002-08-09 14:24
2002.08.22
Как оптимально сделать Create и Free куче переменных TStringlist?