Einzelnen Beitrag anzeigen

Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Datenbankverbindung bei Programmstart

  Alt 11. Feb 2007, 21:30
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;
  Mit Zitat antworten Zitat