Entwickler-Ecke

Datenbanken - ADO-Connection an aktuellen Ordner anpassen


Metalbenny - Sa 12.04.08 08:10
Titel: ADO-Connection an aktuellen Ordner anpassen
Hi,
ich habe ein Problem mit meiner ADO-Connection. Es ist zwar problemlos möglich, mit ihr zu arbeiten, solange ich den Ordner nicht ändere. Kopiere ich das Projekt aber in einen anderen Ordner und versuche ich es dort weiterzubearbeiten, muss ich jedes Mal den aktuellen Ordner vor dem Compilieren manuell beim Connectionstring einstellen.
Nun zu meiner Frage:
Gibt es eine Delphi-Funktion, die ein automatisches ändern des Dateipfades bei ADOConnections ermöglicht?
Und wenn nicht, könnt ihr mir sagen, wie ich den aktuellen Dateipfad meines Projektes auf eine String-Variable bekomme?
Danke schonmal im Voraus!
mfG Benny


Bernhard Geyer - Sa 12.04.08 08:33

Mit


Delphi-Quelltext
1:
  strPfad := ExtractFilePath(Application.ExeName)                    


bekommst du den Pfad der Exe.

und mit


Delphi-Quelltext
1:
  ADODatabase.Connection := Format('Angepaßter Connectionstring mit PLatzhalter', [strPfad + '\Datenbankdateiname']);                    


kannst du die Connection anpassen.
Vergiss aber nicht das wenn dein Programm unter C:\Programme installiert ist der User u.U. keine Schreibrechte in diesen Verzeichnissen hat.

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.


SmileySN - Sa 12.04.08 08:36

Ja, das ist machbar.
1. Du darfst den Pfad zur Datenbank nicht im Objektinspector setzen und dort auch nicht die Connection auf Active=True setzen.
2. Wenn die Datenbank im Programmpfad liegt, dann kannst Du diesen Pfad mit ExtractFilePath(Application.exename) herausfinden.
3. du musst den Connectionstring selbst im Programm zusammensetzen und der Connection zuweisen.
z.B. so:
DM ist mein DataModule, Con1 ist die Connection Komponente,QKat ist eine Query.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
  DM.Con1.Connected := False;
  DBName := 'Adressenkartei.mdb';

  // Connection String zusammensetzen
  ConnString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DBName +
    ';Mode=share deny none;Persist Security Info=False'//';Jet OLEDB:Engine Type=4;';

  with DM.Con1 do
    begin
      try
        ConnectionString := ConnString;

        LoginPrompt := False;
        Connected := True; // ADO Connection aktivieren
        DM.QKat.Active := True; //Query aktivieren
      except
        ShowMessage('Die Datenbank ist nicht vorhanden');
        Halt;
      end;


Metalbenny - Sa 12.04.08 10:46

jo vielen Dank für die Antworten, jetz müsst ichs ja hinkriegen.^^