Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugriff (https://www.delphipraxis.net/40712-fragen-fb-sql-befehle-tzconnection-datenbankdateizugriff.html)

Panthrax 19. Feb 2005 22:29

Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr
 
Nein, leider scheint ein Disconnect nicht auszureichen.

Beispiel (Datenbankdatei: 'MyDB.fdb')
Delphi-Quellcode:
...
var
  Stream :TStream;
...
ZConnection1.Connect;
ZConnection1.Disconnect;
// Hier folgt die Exception:
Stream:=TFileStream.Create('MyDB.fdb',fmOpenRead,fmShareExclusive);
...
Exception:

Datei '...\MyDB.fdb' kann nicht geöffnet werden. Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.


Wie also kann ich die Verbindung zwischen Datei und Firebird lösen?

Panthrax

dizzy 19. Feb 2005 22:47

Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr
 
Unter Umständen könnte es schon reichen nach dem Schließen eine kurze Zeit zu warten. Ich kann mir vorstellen, dass die DB mit dem Schließen noch nicht fertig ist, wenn dein Programm aber schon Zugriff auf das File will. Klatsch da einfach mal ein Sleep(sec); zwischen. Evtl. tut's das schon.

Gruss,
Fabian

Panthrax 19. Feb 2005 22:53

Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr
 
Hab's mit einem Sleep probiert - funktioniert nicht. Auch nicht wenn ich das Programm anderweitig beschäftige. Letzteres hatte ich vorher schon probiert.

Panthrax.

lume96 20. Feb 2005 08:58

Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr
 
Zitat:

Zitat von Panthrax
Wie also kann ich die Verbindung zwischen Datei und Firebird lösen?

Moin,
ich behaupte mal weiterhin, dass ein einfaches Disconnect ausreicht.

Man kann sogar mehrere Zconnections innerhalb des gleichen Programms auf die gleiche DB zugreifen lassen.

Der von Dir beschriebene Fehler tritt auf, wenn ein anderer Prozess, sprich ein anderes Programm auf die DB Zugriff hat (Z.B. ein DB-Admin-Tool, die Delphi-IDE mittels einer Kompo die zur Design-time aktiv ist, etc...).

(Wenn ich jetzt irgendwelchen Unsinn rede, dann bitte ich um Korrektur)

Ausserdem, bist Du Dir sicher, dass der Fehler nach dem Disconnect auftritt, oder eher bei dem TFileStream.Create ???

Wie auch immer, ich hab Dein Beispiel kurz nachgebaut und habe keine Probleme / Fehler.

(Abgesehen davon, dass ich keinen Sinn darin sehen kann, die DB mittels FileStream.Create öffnen zu wollen).

Dein Problem muss eher an aderer Stelle liegen.

Tschüss,
Lutz

lume96 20. Feb 2005 13:22

Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr
 
Hi,

@Panthrax:
Hab Deine PN bekommen, hatte das Projekt leider nicht mehr.

Also schnell noch mal gebaut, und hop, gleiches PB wie Du.

Im Endeffekt scheint es wie folgt auszusehen :
Mit dem FileStream.Create läuft es nur, wenn die aktuelle Instanz des Programmes die DB nicht erstellt hat.

Hat die aktuelle Instanz des Progs die DB erstellt, hilft auch ein Disconnect nichts.

Ich hab noch schnell versucht, die ZConnection, die für das DB Create benutzt wird, dynamisch zu erstellen und hinterher wieder zu löschen. Ändert nichts.

Noch'n Bug der Zeos !!! ???

Tschüss,
Lutz

NB.: Ich frag mich langsam, ob man die Zeos benutzen sollte ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr.
Seite 2 von 2     12   

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