![]() |
Datenbank: Access • Version: xy • Zugriff über: ADO
TAdoConnection disconnecten
Hallo,
ich erstelle eine temporäre Datenbank, welche ich am Funktionsende wieder löschen möchte. Dazu darf sie vom Programm allerdings nicht mehr benutzt werden. Meine Disconnect Funktion sieht wie folgt aus:
Delphi-Quellcode:
procedure Tdbu.dbDisconnect;
begin // falls connected, dann Verbindung abbrechen und Objekte freigeben if connected then try dbcon.Connected := false; connected := false; finally if not connected then begin FreeAndNil(dbcon); FreeAndNil(dbcomm); FreeAndNil(dbquery); end; end; end; Rufe ich danach den Löschbefehl auf, so meldet Windows dass die Datei nicht gelöscht werden kann, da sie noch in Benutzung ist. Warum? Es greifen keine anderen Komponenten auf die DB zu. Gruß |
Re: TAdoConnection disconnecten
Versuche mal herauszufinden, welche Anwendung noch auf die DB-Datei zugreift. Dies geht entweder per ProcessExplorer oder mit Hilfe von jedem anderen IsUsedBy-Tool. Eventuell könnte es sein, dass die Datei gerade noch von anderen Anwendungen gebucht wird.
Zu den Queries: Du hast doch ein eigenes Objekt. Lass doch deine Queries sich dort registrieren (wie du das auch immer machst) und dann kannst du die einzelnen Queries durchgehen und bei Active den Schalter auf FALSE stellen. Bernhard |
Re: TAdoConnection disconnecten
Hallo,
auf die Datenbank greift lediglich mein Programm zu. Sobald dieses geschlossen wird lässt sich die Datei dann auch wieder löschen. Kann es irgendwie sein, dass der ODBC-Treiber trotz Connection.Close weiter eine Verbindung aufrecht erhält und gibt es eine Möglichkeit alle Verbindungen zu cutten? Gruß |
Re: TAdoConnection disconnecten
Zitat:
Hast du einen Virenscanner aktiv? Evtl. blockt dieser die Datei noch ein paar 10tel Sekunden. |
Re: TAdoConnection disconnecten
Guten Morgen,
mir ist beim Posten gestern ein kleiner Fehler unterlaufen: Ich meinte OLEDB :) Aber nein, einen Virenscanner habe ich momentan nicht am Laufen :-/ Die Entwicklungsumgebung läuft in einer virtuellen Win7-Maschine. Außer Firefox, Access, Delphi läuft da eigentlich nichts weiter. Gruß |
Re: TAdoConnection disconnecten
Ich habe in Erinnerung, dass die Connection nicht sofort geschlossen wird, sondern in "Wartestellung" bleibt. Da gab es aber im Entwickler Forum mal Antworten von Andreas Kosch (bin mir nicht ganz sicher).
Wichtig ist aber, dass die Tabellen geschlossen sind bzw. nicht ein ADODataSet.Open nach dem Disconnect statt findet. Zu deinem Try: An sich solltest du die Verbindung einfach nur mit ADOConnection.Close geschlossen bekommen... Viele Grüße Sybok |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 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 by Thomas Breitkreuz