![]() |
Datensatz aus DBase endgültig löschen
Hallo Leute,
wenn ich über eine TQuery-Komponente in einer DBase-Tabelle mit einer "delete from table1 where nummer=0" -Anweisung mehrere Datensätze lösche, dann sind diese in der DBase Oberfläche immer noch zu sehen aber als gelöscht markiert. Wenn ich diese DBase-Datei in EXCel oder der BDE-Oberfläche öffne, dann sind diese Datensätze nicht zu sehen. DBase scheint diese Datensätze aber noch zu speichern, da sich die Größe (bytegröße) der Tabelle auch nicht ändert. Lange Rede kurzer Sinn: Wie kann ich mit einer TQuery-Komponente diese Datensätze endgültig löschen? Gruß AK |
Re: Datensatz aus DBase endgültig löschen
Hallo,
Delphi-Quellcode:
uses
BDE, DB, DBTables, DBITypes; function PackDBFTabelle(aTable:TTable):Bool; var excl:Bool; begin Result:=True; with aTable do begin excl:=Exclusive; try DisableControls; Close; if not excl then Exclusive:=True; try Open; Check(DBIPackTable(DbHandle, Handle, PChar(TableName), szDBASE, TRUE)); except on E:EDBEngineError do begin ShowMessage(E.Message); Result:=False; end; // on end; // try finally Close; Exclusive:=excl; Open; EnableControls; end; // try end; // with aTable end; // PackDBFTabelle |
Re: Datensatz aus DBase endgültig löschen
Damit wird sie dann kompriert und verliert ihre "alten" Datensätze?
Werde es mal demnächst ausprobieren. Gruß |
Re: Datensatz aus DBase endgültig löschen
hallo gollum,
erwartet die check funktion nicht einen rückgabewert als dbiresult? |
Re: Datensatz aus DBase endgültig löschen
Hallo,
@kiar: Check ist in der Unit DBTables folgendermassen deklariert:
Delphi-Quellcode:
Ich denke, das beantwortet Deine Frage.
procedure Check(Status: DBIResult);
begin if Status <> 0 then DbiError(Status); end; |
Re: Datensatz aus DBase endgültig löschen
Klappt übrigens sehr gut. :thuimb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz