Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 
#1

TSQLConnection: Vermisse sowas wie "OnWillConnect"

  Alt 12. Feb 2010, 00:28
Datenbank: Firebird • Version: 2.1 • Zugriff über: DBX
Wie löst ihr das Problem mit "zur Laufzeit konfigurierten DBX Connections", wenn ihr beim Erzeugen des Projektes vergessen habt, das Connection-Objekt im Designer auf Connected:=false zu setzen...?
Problematisch wird das ja spätestens dann, wenn euer Programm die Entwicklungsumgebung verlässt und beim Kunden installiert wird. Dort sind Servernamen, Datenbankpfade... in der Regel anders und beim Programmstart in der fremden Umgebung gibt es dann eine nette Exception beim Instanzieren des DataModules.

Delphi-Quellcode:
  Application.Initialize;
  Try
    Application.CreateForm(TDataModule, DataModule); // <<< GRRR
  Except
    On E:Exception do
      Showmessage('Grrr! Ich Brot habe mal wieder ein Build mit einer aktiven DBX Connection zum Kunden geschleppt... Ab ins Auto und .. noch einmal machen!');
  End;
Bei ADO greift vor dem Verbindungsversuch das Event "OnWillConnect" in dem man alle seine Sünden wieder gerade biegen kann, indem man den ConnectionString mit gültigen Werten überschreibt.

DBX hat von Hause aus nichts Vergleichbares.
Das OnBeforeConnect Event wird leider nicht aufgerufen, wenn die Connected-Property bei der Instanzierung der TSQLConnection Klasse bereits den Wert "True" hatte (weil zur Entwurfszeit gesetzt).
Irgendwie muss man da doch eine saubere Lösung hinbekommen können.

Die Alternativen
- DBXConnection.ini ausliefern oder
- auf den "Komfort" eines ConnectionObjektes während der Entwurfszeit verzichten und alles zur Laufzeit erstellen oder
- nie vergessen das ConnectionObjekt beim letzten Build vor der Auslieferung auf disconnected zu stellen
haben alle erhebliche Nachteile bzw. Unsicherheiten.



Schöne Grüße,
Jens
  Mit Zitat antworten Zitat