TTable Datei löschen
Hallo Leutz!
Ich erstelle mit dem FormCreate Ereignis eine Datei, die ich anschliessend an eine TTable-Komponente binde. Active wird danach auf True gesetzt. Beim Ereignis FormClose möchte ich diese Datei wieder löschen. Dazu setze ich Active auf False, aber löschen lässt sich die Datei dann nicht. Was muss denn noch erfüllt sein, damit ich die Datei löschen kann? Danke für Eure Tipps! Michael |
Re: TTable Datei löschen
Hallo glunzl,
zunächst einmal herzlich willkommen im Delphi-PRAXIS Forum. Nun zu deiner Frage: Eigentlich sollte das Schließen der Tabelle ausreichen, um die zugrundeliegende Datei löschen zu können. Versuche vielleicht mal ChachedUpdate auf False zu setzen, damit nicht mit Zwischenspeichern gearbeitet wird. |
Re: TTable Datei löschen
Mit dem BDE-Krempel kenne ich mich überhaupt nich aus, aber eine Gegenfrage habe ich da:
Warum eine Tabelle erstellen um sie beim Schließen wieder zu löschen? |
Re: TTable Datei löschen
hallo mr spock!
Zitat:
aber gott sei dank tut sie das ohnehin nicht so leichtfertig, ausser man experimentiert mit 'deletetable' :mrgreen: mfg, stefan |
Re: TTable Datei löschen
hallo glunzl!
also normalerweise löscht man tabellen nicht beim beenden des programmes, ausser es handelt sich um temporäre tabellen. zieh dir eine TTable-komponente auf die IDE, markiere sie und drück auf F1. unter den methoden des tables wirst du ausdrücke wie DeleteTable oder EmptyTable finden. und eines der beiden passt für dein vorhaben. mfg, stefan |
Re: TTable Datei löschen
Hallo grayfox,
:shock: da hab ich mich wohl falsch ausgedrückt. Ich meinte, dass das Schließen der Tabelle diese frei gibt, sodass sie anschließend gelöscht werden kann. Natürlich wird sie nicht automatisch gelöscht :stupid: . |
Re: TTable Datei löschen
@ MrSpock: Danke für's Willkommen :-)
@all: Die Tabelle wird als tempöräre Tabelle/Datei genutzt. In diese sollen Inhalte aus andere Tabellen eingefügt werden, um diese dann auszuwerten. Z.Z. sieht das so aus:
Delphi-Quellcode:
Bei Table_Temp.DeleteTable tritt dann eine Exception der Klasse EDBEngineError, Meldung "Ungültiger Dateiname" auf.
procedure TForm1.FormCreate(Sender: TObject);
var begin // ... erzeugen der der Temp-Datei ... Try Table_Temp.DatabaseName := GetTempFolder ; Table_Temp.TableName := 'VA_TEMP.dbf' ; Table_Temp.Active := True ; Except Application.MessageBox('Die temp. Tabelle konnte nicht an die temp. Datei gebunden werden', 'Visuanalyse', 48) ; End ; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin // Löschen der Temp Datei Table_Temp.Active := False ; Table_Temp.DeleteTable ; If FileExists(GetTempFolder + 'VA_TEMP.dbf') Then If not DeleteFile(GetTempFolder + 'VA_TEMP.dbf') // TempDatei löschen Then Application.MessageBox('Die temporäre Datei konnte nicht gelöscht werden.' , 'Visuanalyse', 48) ; Wenn ich die Zeile Table_Temp.DeleteTable rausnehme, erscheint halt meine MessageBox, das die Datei nicht gelöscht werden konnte. Wenn ich Table_Temp.DeleteTable durch Table_Temp.EmptyTable ersetze, tritt an der Stelle eine Exception der Klasse EDBEngineError, Meldung "Ungültiger Parameter" auf. Nach meinem Verständniss, müsste ich doch nur die "Verbindung" von der Tabelle zur Datei lösen und könnte sie dann löchen. Aber scheinbar langt Table_Temp.Active := False ; nicht. Kann mir noch jemand weiterhelfen? Gruss Michael [edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit] |
Re: TTable Datei löschen
@Sharky: Danke! Wieder was gelernt ...
Michael |
Re: TTable Datei löschen
Hai glunzl,
ich vermisse bei deinem Code ein .CreateTable. Wenn die Tabelle nur temporär vorhanden ist musst Du sie doch auch irgendwann erzeugen. |
Re: TTable Datei löschen
@Sharky: Ich habe mir eine TTable-Komponennte auf meine Form gezogen. Muss sie dann nicht nur im Objektinspektor eingestellt werden? Zur Laufzeit stelle ich dann die andreren Eigenschaften ein.
Die Datei wird ja angelegt, sehe ich ja. Nur das löschen will nicht ... Michael |
Re: TTable Datei löschen
Du hast doch eine Datenbank in der deine Temp-Tabelle liegen soll. Diese Tabelle (nicht das TTable) muss doch erst in der Datenbank erzeugt werden.
Beim start deines Programmes: Datenbank -> tmp_DB Tabellen -> keine Jetzt musst Du erst eine tmp_table erzeugen. |
Re: TTable Datei löschen
Danke, werde ich gleich mal in Angriff nehmen. (Wäre wohl beim kopieren der Datensätze aufgefallen :-))
Aber hat das erzeugen der Tabelle auch damit zu tun, das ich die Datei nicht löschen kann? Michael |
Re: TTable Datei löschen
Zitat:
|
Re: TTable Datei löschen
Wenn ich mir den Sourcecode so anschau, dann wird doch eine einsame DBF-Tabelle erzeugt.
Also nix mit Datenbank. Hab das ganze mal nachvollzogen:
Code:
und die Tabelle ist gelöscht.
procedure TForm1.FormCreate(Sender: TObject);
var begin // ... erzeugen der der Temp-Datei als DBase-Tabelle, Table1.DatabaseName := 'C:\temp' ; Table1.TableName := 'VA_TEMP.dbf' ; Table1.Active := True ; // Table2.Open; // While NOT Table2.EOF; // die Tabelle1 mit Tabelle2 füllen end ; // die Tabelle ist da procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin // Löschen der Temp Datei Table1.Active := False ; Table1.DeleteTable ; Also entweder lauft das bei dir anders oder ich versteh das nicht. :freak: Was ich beim Test NICHT benutzt hatte war ein INDEX ! Habs jetzt auch nicht mehr probiert. Liegt da der Hund begraben ? Karsten |
Re: TTable Datei löschen
Nachdem ich jetzt die Tabelle mit allen Feldern und .CreateTable erzeuge funzt alles einwandfrei.
Vorher habe ich wohl nur die Datei erzeugt, aber nicht die Tabelle. Dank an alle! Michael |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz