![]() |
FDConnection automatsch disconnecten bei Ausführung
Hi,
ich hab ein Thema, dass mich immer mal wieder in meinem Workflow hindert und wollte mal wissen, ob ihr vielleicht eine Idee habt, wie man das lösen kann :) Ich habe in einem Projekt eine FDConnection und ein paar Querys auf eine SQLite Datenbank. So weit, so unspektakulär. Da ich öfter mal mit LiveBindings hantiere, führe ich die Querys öfter schon in der Entwurfsphase aus. Das führt dann natürlich dazu, dass die FDConnection aktiviert wird. Wenn aber die FDConnection verbunden ist, befindet sich die SQLite DB im exklusiven Zugriff. Das führt dann dazu, dass mir das Programm jedes Mal crasht, weil die DB bereits exklusiv geöffnet ist. Frage, kann ich der IDE irgendwie mitgeben, dass sie die Connection der Verbindung trennen soll, wenn ich das Programm ausführe? Danke schon mal :) Gruß PJM |
AW: FDConnection automatsch disconnecten bei Ausführung
Dafür gibt es bei der Connection das Property
![]() Für die Query wäre das analog ![]() |
AW: FDConnection automatsch disconnecten bei Ausführung
Das regelt doch nur, ob das Connected/Active in der DFM gespeichert wird.
Wenn beim Debuggen die Form geladen ist, dann bleibt es doch dennoch aktiv? Bei anderen DBKomponenten nennt sich sowas z.B. gerne Connection.Options.DisconnectedMode (am Beispiel von Devart), wo die Connection sich nur kurz beim Execute connected und sich anschließend sofort wieder disconnected. Aber auf die Schnelle sehe ich hier sowas nicht. ![]() |
AW: FDConnection automatsch disconnecten bei Ausführung
Zitat:
|
AW: FDConnection automatsch disconnecten bei Ausführung
Wie wäre es, für die Entwicklung eine andere DB für den Entwurf zu verwenden?
|
AW: FDConnection automatsch disconnecten bei Ausführung
Das Problem nervt mich auch bei SQLite.
Als Workaround setze ich eine ähnliche Lösung ein, wie von Union vorgeschlagen. Da ich immer im Debugmodus entwickle habe ich das für mich über Compiler-Directiven gelöst und einer zweiten Datenbank. Wenn du die "echte" Version kompilierst musst du halt umschalten auf Release, die FDConnection deaktivieren und "Alle Projekte erzeugen" ausführen. Da ich das generell so handhabe passt dieser Workflow für mich bzw. habe ich mich an diesen Ablauf gewöhnt.
Delphi-Quellcode:
DM.FDConnection1.Params.Clear;
WITH DM.FDConnection1.Params DO BEGIN Add( 'DriverName=SQLITE' ); Add( 'DriverID=SQLite' ); {$IFDEF DEBUG} Add( 'Database=' + ExtractFilePath( ParamStr( 0 ) ) + 'Kanban_Board_Debug.db' ); {$ELSE} Add( 'Database=' + ExtractFilePath( ParamStr( 0 ) ) + 'Kanban_Board.db' ); {$ENDIF} END; |
AW: FDConnection automatsch disconnecten bei Ausführung
Im Designer hilft das nichts.
Aber du kannst im Designer die Design-Datenbank einstellen und das Connected nicht speichern lassen und dann zur Laufzeit im Code die eigentliche Connection einstellen. Alternativ könnte man sich via OTA vielleicht ins Starten des Prozesses/Debuggers einhängen (bzw. ganz einfach ins PreBuild oder PostBuild), dort die im Designer geöffneten Forms und darauf die Connections durchlaufen und die disconnecten. |
AW: FDConnection automatsch disconnecten bei Ausführung
Ich habe eigene Komponenten für den Datenzugriff. Also Query und Table und Connection sind gekapselt.
Query und Table haben zur Laufzeit kein Interesse an einer lokal rumliegenden Connection auf dem Form. Die wird beim Laden rausgeschmissen und sich beim globalen Connection Manager mit einer passenden versorgt. Liegt irgendwo eine Connection rum die zur Designzeit aktiv war, ist die zur Laufzeit auch automatisch inaktiv. Ab einer bestimmten Programmgröße wird es sinnvoll alles so Zentral wie möglich zu verwalten. Fängt man damit gleich beim ersten form an, hat man später nicht doppelte arbeit. |
AW: FDConnection automatsch disconnecten bei Ausführung
Zitat:
|
AW: FDConnection automatsch disconnecten bei Ausführung
Eventuell hilft hier GExperts weiter:
GEperts -> Configuratin -> Experts -> Set Components Property Bei diesem Experten kann man Komponenten + Properties konfigurieren, die beim Speichern eines Projekts / Formulars auf einen bestimmten Wert gesetzt werden sollen. Das nicht ganz das, was Du suchst, denn diese Properties werden bei jedem Abspeichern gesetzt. Aber gerade bei Connections, die man eigentlich nie aktiv abspeichern will, ist das praktisch. Voreingestellt sind TAdoConnection.Connected, TDatabase.Connected und TDataSet.Active, die alle auf False gesetzt werden. Diese Liste könnte um FDConnection.Connected erweitert werden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 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-2025 by Thomas Breitkreuz