Einzelnen Beitrag anzeigen

dstein

Registriert seit: 28. Jul 2005
Ort: Dormagen
55 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

Re: Datenbank Reorganisation???

  Alt 17. Okt 2005, 15:29
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]
Dirk
- Lang ist der Weg durch Lehren, kurz und wirksam durch Beispiele.
(Seneca, röm. Dichter u. Phil., 4 v. Chr. - 65 n.Chr.) -
  Mit Zitat antworten Zitat