Zitat von
Hansa:
Wieso denn das ? Bzw. wozu ?
Du legst den
DB-Namen bzw. Laufwerk, Pfad etc. beim Programmstart fest und fertig.
Das DataModule muss dazu nur früh genug erzeugt und bestückt werden.
Sein Problem ist, wenn er ein projekt kompiliert, bei dem die Connection bereits im
OI gemacht wird, so kommt es zu einer
Exception, wenn die Anwendung auf einem Fremdrechner gestartet wird. Ich kenne das Problem. Ich nutze lokal eine Datenbank mit der ich in der
IDE arbeite. Bei Programmstart soll aber eine Datenbank geöffnet werden, die, wie du beschrieben hast, von mir aus in einer ini-Datei definiert ist. Wegen der connected=true Eigenschaft im
OI wird aber zuvor versucht, mit der in der
IDE definierten Datenbank eine Verbindung aufzustellen. Und das führt auf einem anderen Rechner zu einer
Exception.
Marabu's Lösung ist der einzige Weg. Im BeforeConnect Event kann mittels abort eine Verbindung unterbunden werden. Problem ist erstmal, dass somit natürlich jede Verbindung unterbunden wird, auch die nachher im Programm manuell zu öffnende. Es lässt sich aber leicht im BeforeConnect über ein Tag entscheiden, ob die Verbindung abgebrochen werden soll oder nicht. z.B. einfach so:
Delphi-Quellcode:
procedure TForm1.ADOConnection1BeforeConnect(Sender: TObject);
begin
if tag=0 then abort;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
self.Tag := 1 ;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
self.ADOConnection1.Connected := true ;
self.ADOQuery1.open;
end;