Entwickler-Ecke
Datenbanken - table leeren
galbe19 - Mo 22.10.07 10:28
Titel: table leeren
Hallo
ich will ein Table leeren und ich mache es folgenderweise
Delphi-Quelltext
1: 2: 3: 4: 5:
| table3.First; while not table3.eof do begin table3.Delete; end; |
ich benutze diese tabelle das ich aus einer anderen etwas ausfiltern will, und ich will sie nach jeder filterung leeren.
aber meine datenbank (.dbf) wird immer grosser aber sie ist immer leer.
was mache ich falsch?
mfg
Alex
Moderiert von
Narses: Topic aus VCL (Visual Component Library) verschoben am Mo 22.10.2007 um 10:39
Moderiert von
Narses: Delphi-Tags hinzugefügt
UGrohne - Mo 22.10.07 11:14
Das ist ein bei Datenbanken ganz normales Verhalten. Der Speicher von gelöschten Datensätzen wird nicht (oder nicht sofort freigegeben), das musst Du selbst tun. Wie das aber mit der BDE (ist doch DBase, oder nicht?) geht, kann ich Dir nicht sagen, da ich sie seit Delphi 5 nicht mehr verwende (wird nicht mehr weiterentwickelt).
galbe19 - Mo 22.10.07 12:15
hallo
ich habe etwas mit empty table versucht aber ich bekomme immer die fehlermeldung
table cannot be open for exclusive use
ich weiss nicht mehr weiter
mfg
alex
Agawain - Mo 22.10.07 12:24
hi
statt die Tabelle satzweise zu löschen, würde ich die ganze Tabelle per SQL löschen und neu aufbauen.
Gruß
Aga
Narses - Mo 22.10.07 12:27
Moin!
Gleich vorab: ich habe von Datenbanken gerade soviel Anhung, dass ich weiß, dass ich keine Ahnung habe... :? Also bitte das Folgende mit Vorsicht genießen: ;)
Hab in einem alten Projekt auch mal sowas gemacht, hier mal der Ausschnitt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| try with Matrix do begin Active := FALSE; TableType := ttParadox; TableName := DB_MATRIX; with FieldDefs do begin Clear; with AddFieldDef do begin Name := 'PROFIL'; DataType := ftString; Size := 20; Required := TRUE; end; for i := 0 to FktDef.Count-1 do with AddFieldDef do begin Name := FktDef.Strings[i]; DataType := ftString; Size := 1; end; end; CreateTable; end; except MessageDlg('Fehler beim Anlegen der Matrix-Tabelle!?',mtError,[mbOK],0); end; |
Wesentliche Idee: die Tabelle deaktivieren und für gewünschte Felddefinitionen sorgen, dann einfach mit CreateTable neu anlegen. :idea:
cu
Narses
UGrohne - Mo 22.10.07 13:54
Ohje ... kauft Ihr Euch auch gleich nen neuen Rechner, wenn Ihr das OS neu installieren wollt? :mrgreen:
Ne, an der Datenbankstruktur ändert man (außer in Ausnahmefällen) nie etwas! Daher schau mal nach, ob Du etwas zu Shrink, Compress oder Defragment in Bezug auf DBase findest, das ist eher was für Dich.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!