Ich habe da was aus alter Zeit gefunden
DaBa#s
reinitialisieren
Wenn sich mal wieder einer Ihrer Index umgedreht hat, ist es nötig, die zugrundeliegende Tabelle zu reindizieren.
Dazu stellt das TTable-Objekt keinerlei Methodik zur Verfügung.
Allerdings haben Sie ja Zugriff auf die
BDE auf Systemebene (siehe Beitrag Blick hinter die Kulissen).
Denn hier stehen Ihnen alle Routinen zur Verfügung, mit denen sich dBase- und
Paradox-Tabellen bearbeiten lassen.
Dazu zählt auch die Funktion DbiRegenIndexes.
Mit ein paar Kniffen erhalten Sie daraus eine praxistaugliche Funktion, mit der Sie beliebige Tabellen vom Typ TTable reindizieren:
Delphi-Quellcode:
Function DBReIndex(tbl: TTable) : Boolean;
Var bOpen, bExclusive : Boolean;
Begin
bOpen := tbl.Active;
bExclusive := tbl.Exclusive;
Try
Try
If Not tbl.Exclusive
Then
Begin
tbl.Close;
tbl.Exclusive := True;
End;
if Not tbl.Active
Then
tbl.Open;
Check(DbiRegenIndexes(Tbl.Handle));
Finally
Result := True;
End;
Except
On E:
Exception Do Begin
ShowMessage(E.
Message);
Result := False;
End;
End;
If bExclusive
And bOpen
Then
{alles OK => nichts tun}
Else
Begin
tbl.Close;
tbl.Exclusive := bExclusive;
tbl.Active := bOpen;
End;
End;
Damit die Routine auch ordnungsgemäß kompiliert, müssen Sie verschiedene Bibliotheken in der Uses-Klausel nennen.
Dazu gehören natürlich die beiden Datenbank-Units DBTables und
DB,
aber genauso die beiden Interface-Deklarationsdateien DBIProcs und DBITypes.
[edit=r_kerber]Delphi-Tags eingefügt. Das nächste Mal bitte selbst machen. Mfg, r_kerber[/edit]