Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Direkte Pfadangabe zur Datenbank (mdb) zwingend nötig? (https://www.delphipraxis.net/188598-direkte-pfadangabe-zur-datenbank-mdb-zwingend-noetig.html)

sigi 19. Mär 2016 12:26

Direkte Pfadangabe zur Datenbank (mdb) zwingend nötig?
 
Hallo,

ich habe DBGrid über ADOConnection, DataSource, und Table mit einer Daten.mdb verbunden. Provider=Microsoft.Jet.OLEDB.4.0. Soweit alles ok.
Ich möchte folgendes, wenn die exe und Daten.mdb in einen beliebigen Ordner gepackt wird, das die exe nur in diesem Ordner nach der Daten.mdb sucht und verwendet. Ist das möglich, oder muss immer der direkte Pfad zur Datenbank in der exe angegeben werden?

Gruß sigi

mkinzler 19. Mär 2016 12:28

AW: Direkte Pfadangabe zur Datenbank (mdb) zwingend nötig?
 
Du kannst den connection string auch dynamisch beim Start der Applikation auf den dann gültigen absoluten Pfad setzen.

nahpets 19. Mär 2016 13:13

AW: Direkte Pfadangabe zur Datenbank (mdb) zwingend nötig?
 
Wenn im Connectionstring der Datenbankname ohne Pfad angegeben ist, sucht die Exe die Datenbank nur im eigenen Verzeichnis.

Sprich: Datenbank und Exe müssen sich dann im gleichen Verzeichnis befinden.

sigi 23. Mär 2016 10:53

AW: Direkte Pfadangabe zur Datenbank (mdb) zwingend nötig?
 
Zitat:

Zitat von nahpets (Beitrag 1333356)
Wenn im Connectionstring der Datenbankname ohne Pfad angegeben ist, sucht die Exe die Datenbank nur im eigenen Verzeichnis.

Das ist es, Danke

Gruß sigi

mkinzler 23. Mär 2016 13:29

AW: Direkte Pfadangabe zur Datenbank (mdb) zwingend nötig?
 
Darauf würde ich mich aber nicht verlassen.

HolgerX 23. Mär 2016 13:55

AW: Direkte Pfadangabe zur Datenbank (mdb) zwingend nötig?
 
Hmm..

könnte es nicht sein, dass dann im 'Arbeitsverzeichnis' gesucht wird?

Besser den Pfad absolut mit
Delphi-Quellcode:
ExtractFilePath(ParamStr(0)) + 'Daten.mdb'

im Connectionstring setzen.

nahpets 23. Mär 2016 14:50

AW: Direkte Pfadangabe zur Datenbank (mdb) zwingend nötig?
 
Zitat:

Zitat von HolgerX (Beitrag 1333658)
Hmm..

könnte es nicht sein, dass dann im 'Arbeitsverzeichnis' gesucht wird?

Besser den Pfad absolut mit
Delphi-Quellcode:
ExtractFilePath(ParamStr(0)) + 'Daten.mdb'

im Connectionstring setzen.

Dann muss man aber zur Laufzeit den Connectionstring parsen und verändern.

Alternative: Statt nur den Dateinamen der Datenbankdatei
Delphi-Quellcode:
.\Datenbankdateiname.mdb
nehmen.

Im FormCreate kann man auch noch ein
Delphi-Quellcode:
  ChDir(ExtractFilePath(Application.ExeName));
machen, dann ist das aktuelle Verzeichnis auf jeden Fall auch das Arbeitsverzeichnis, unabhängig davon, wer wann und wo ein Arbeitsverzeichnis angegeben hat.

Diese Variante nutze ich für Programme, die nicht installiert werden müssen, sondern von USB-Stick, externer Festplatte... laufen sollen und ihre Daten auf dem Speicherträger ablegen sollen, auf dem sich die Exe befindet.

Allerdings lege ich die Daten, Konfigurationen... in Unterverzeichnissen ab.

Der Datenbankname im Connectionstring sähe dann so aus:
Delphi-Quellcode:
.\Data\Datenbankdateiname.mdb
Konfigurationen befinden sich im Unterverzeichnis Config, eine Dateinamenangabe sähe dann so aus:
Delphi-Quellcode:
.\Config\Programmname.ini

HolgerX 23. Mär 2016 18:30

AW: Direkte Pfadangabe zur Datenbank (mdb) zwingend nötig?
 
Hmm..

Wir bauen den ConnectionString grundsätzlich dynamisch zusammen und öffnen die DB gezielt.

Über eine INI-Datei wird angegeben, zu welchem Datenbank-Typ die Verbindung aufgebaut werden soll und wie der Server-Name ist.

Somit kann mal eine Access-Datenbank, mal ein MSSQL-Server oder eben eine andere ODBC-Schnittstelle verwendet werden, ohne dass im Programm was verändert werden muss.
(Klar dass die SQL-Abfragen auf allen DB-Systemen gleich funktionieren müssen ;) )


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz