Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TAdoConnection disconnecten (https://www.delphipraxis.net/149356-tadoconnection-disconnecten.html)

Ducksoul 19. Mär 2010 13:42

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ß

rollstuhlfahrer 19. Mär 2010 14:22

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

Ducksoul 24. Mär 2010 14:43

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ß

Bernhard Geyer 24. Mär 2010 15:58

Re: TAdoConnection disconnecten
 
Zitat:

Zitat von Ducksoul
... dass der ODBC-Treiber ...

Wieso ODBC?

Hast du einen Virenscanner aktiv? Evtl. blockt dieser die Datei noch ein paar 10tel Sekunden.

Ducksoul 25. Mär 2010 10:45

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ß

Sybok Factor 25. Mär 2010 11:45

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