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