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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
3-71017
RangerBetta
2002-07-31 08:17
2002.08.22
Подскажите SQL WHere


1-71138
delta
2002-08-13 14:10
2002.08.22
Hooks


1-71079
kinder
2002-08-09 13:42
2002.08.22
Выпадающий список в DBGrid


4-71444
Ricks
2002-06-16 19:25
2002.08.22
Windows XP hint


6-71296
Vygantas
2002-06-08 16:05
2002.08.22
kak po imeni kompa uznat IP ??





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский