Home » Tutorials » Datenbanken » Flexible ADO-Connection zur Ansteuerung einer Access-Datenbank

Flexible ADO-Connection zur Ansteuerung einer Access-Datenbank

Konfiguration

Nun kann man das schon mal zur Laufzeit ausprobieren. Dazu im Menü des Hauptformulars den Eintrag „Datenbank Konfiguration“ hinzufügen mit dem Ereignis:

procedure TForm1.DatenbankKonfiguration1Click(Sender: TObject);
var DSN: string;
begin
  if DataModule2.EditMeineAnwendungDSN(DSN) then 
  begin
    MessageDlg('Der DSN konnte erfolgreich geändert werden', mtInformation, [mbOK], 0);
    WriteDSNToRegistry(DSN);
  end
  else
    MessageDlg('Der DSN konnte nicht geändert werden', mtError, [mbOK], 0);
end;

Der Benutzer kann also jetzt bereits zur Laufzeit die Datenbank neu auswählen. Nun müssen wir nur noch beim Öffnen der Anwendung dafür sorgen, dass die DSN aus der Registry geholt wird, und beim Schließen wieder zurückgeschrieben wird; bzw. falls die Datenbank nicht geöffnet werden kann, soll sich der Dialog zur Eingabe durch den Benutzer öffnen.
Dazu legen wir die Ereignisse OnShow bzw. OnClose des Hautformulars an:

procedure TForm1.FormShow(Sender: TObject);
var DSN: string;
begin
  if ReadDSNFromRegistry(DSN) then begin
    if DataModule2.SetMeineAnwendungDSN(DSN) then
      if not DataModule2.OpenDatabase then begin
        MessageDlg('Es konnte keine Verbindung zur Datenbank '+ 'aufgebaut werden.', mtError, [mbOK], 0);
        DatenbankKonfiguration1Click(Sender);
      end;
  end
  else if not DataModule2.OpenDatabase then begin
    MessageDlg('Es konnte keine Verbindung zur Datenbank '+ 'aufgebaut werden.', mtError, [mbOK], 0);
    DatenbankKonfiguration1Click(Sender);
  end
  else begin
    MessageDlg('Es konnte keine DSN ausgelesen werden.', mtError, [mbOK], 0);
    DatenbankKonfiguration1Click(Sender);
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  WriteDSNToRegistry(DataModule2.GetMeineAnwendungDSN);
  DataModule2.CloseDatabase;
end;