Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Kann man den Datenbank Pfad vorgeben. (https://www.delphipraxis.net/183617-kann-man-den-datenbank-pfad-vorgeben.html)

ATS3788 23. Jan 2015 07:57

Datenbank: Firebird • Version: 2.5 • Zugriff über: firedac

Kann man den Datenbank Pfad vorgeben.
 
Hallo
Ich habe seit heute das Problem das FDConnection, den Standard fdcliend.dll nicht mehr benutzt,
anstatt, möchte er auf eine fbembed.dll Version zugreifen, was nicht geht und auch nicht soll.

Ich habe ein total neues Projekt erstellt mit den gleichen Ergebnis.

Mit dem Tool FireDac - Explorer habe ich keine Probleme.

Kann man Delphi vorgeben wo er die Datenbank suchen soll.

IBExpert funktioniert ohne Probleme.

Danke für die Antworten

user0815 23. Jan 2015 08:37

AW: Kann man den Datenbank Pfad vorgeben.
 
Müsste man doch wie folgt (Datenmodul) zuweisen können oder ?

Delphi-Quellcode:
UniConnection.SpecificOptions.Values['ClientLibrary'] := ExeProgramDirectory + 'fbclient.dll';

ATS3788 23. Jan 2015 11:24

AW: Kann man den Datenbank Pfad vorgeben.
 
Danke :(
Ich meine nicht die xxxx.fdb ich meine fbclient.dll der sich bei mir
im Ordner C:\Program Files\Firebird_2_5\bin\ befindet.

Uwe Raabe 23. Jan 2015 11:32

AW: Kann man den Datenbank Pfad vorgeben.
 
Liegt die fbclient.dll im Suchpfad?

user0815 23. Jan 2015 11:52

AW: Kann man den Datenbank Pfad vorgeben.
 
UniConnection.SpecificOptions.Values['ClientLibrary'] := 'C:\Program Files\Firebird_2_5\bin\fbclient.dll';

waldforest 23. Jan 2015 11:53

AW: Kann man den Datenbank Pfad vorgeben.
 
Hallo,
ich mach es genau so,

Datenmodul.DataModule1.con_to_Datei.Database := Datenbank_Server;
Datenmodul.DataModule1.con_to_Datei.Protocol := 'firebird-2.5';
Datenmodul.DataModule1.con_to_Datei.HostName := 'localhost' ;
Datenmodul.DataModule1.con_to_Datei.Port := 3050;
Datenmodul.DataModule1.con_to_Datei.LibraryLocatio n := ExtractFilePath(Application.ExeName)+'fbclient.dll '

Sofern die dll nicht im aktuellen Verzeichnis liegt diese entsprechend anpassen.

tsteinmaurer 23. Jan 2015 12:07

AW: Kann man den Datenbank Pfad vorgeben.
 
Wichtig ist, dass die Bitness (32 vs. 64-bit) der FB Clientbibliothek gleich der Client-Anwendung ist. D.h. eine 32-bit Delphi Anwendung wird mit der fbclient.dll aus einem 64-bit Firebird \bin Verzeichnis nichts anfangen können.

Perlsau 23. Jan 2015 12:29

AW: Kann man den Datenbank Pfad vorgeben.
 
Zitat:

Zitat von tsteinmaurer (Beitrag 1287551)
Wichtig ist, dass die Bitness (32 vs. 64-bit) der FB Clientbibliothek gleich der Client-Anwendung ist. D.h. eine 32-bit Delphi Anwendung wird mit der fbclient.dll aus einem 64-bit Firebird \bin Verzeichnis nichts anfangen können.

Genau :thumb: Und deshalb lege ich meinen Bin-Verzeichnissen stets auch die entsprechenden DLL-Varianten bei und lasse meine Anwendung die DLLs im Programmverzeichnis verwenden. Bei Firebird Embedded soll die Anwendung ja auch auf Rechnern ohne installierten Firebird-Server laufen, was nur möglich ist, wenn ich die Embedded-DLL mitgebe. Um dieselbe Anwendung ohne Neukompilierung einmal als Server- und ein andermal als Embedded-Variante starten zu können, empfiehlt es sich, die entsprechenden Daten beim Start abzufragen: entweder via Ini-Datei oder Registry-Eintrag oder als Startparameter. Wenn ich Startparameter verwende, dann startet meine Anwendung ohne die Angabe von Startparametern stets als Embedded-Variante. Ich regle das inzwischen so, daß stets zwei Parameter angegeben werden (können): 0 oder 1 für Embedded oder Server, und ein String mit dem Namen für den Ordner, in dem sich die DB befindet. Als dritter Parameter wäre u.U. denkbar, auch den Speicherort der fbclient.dll anzugeben, da es zu Konflikten kommen kann, wenn ein Anwender zwar die Server-Variante nehmen will, aber einen veralteten Firebird-Server installiert hat.

Übrigens sollte man nicht die 32-/64-Bit-Architektur der Datenbank-Anwendung, die jeweils eine 32-/64-Bit-Client-DLL benötigt, mit der 32-/64-Bit-Architektur des installierten Firebird-Servers oder gar des eingesetzten Betriebssystems verwechseln – ist natürlich nicht an dich adressiert, Thomas :stupid:

Uwe Raabe 23. Jan 2015 12:53

AW: Kann man den Datenbank Pfad vorgeben.
 
Zitat:

Zitat von user0815 (Beitrag 1287547)
UniConnection.SpecificOptions.Values['ClientLibrary'] := 'C:\Program Files\Firebird_2_5\bin\fbclient.dll';

Delphi-Quellcode:
TFDConnection
hat aber kein Property
Delphi-Quellcode:
SpecificOptions
! Könnte es sein, daß du dich hier auf UniDAC beziehst?

Zitat:

Zitat von ATS3788 (Beitrag 1287542)
fbclient.dll der sich bei mir
im Ordner C:\Program Files\Firebird_2_5\bin\ befindet.

Dann versuch doch mal

Delphi-Quellcode:
  FDConnection1.Params.Values['VendorHome'] := 'C:\Program Files\Firebird_2_5';

ATS3788 23. Jan 2015 13:10

AW: Kann man den Datenbank Pfad vorgeben.
 
Ja Uwe ich habe es
im System Dir der System Steuerung eingefügt.
Letzte Woche hatte alles noch funktioniert. Nur da hatte
ich Probleme mit IBExpert und habe dies mit
neu installiert um gds32.dll ins Systempfad zu installieren.
Nun habe ich das Desaster IBExpert geht und FD mag nicht.

ATS3788 23. Jan 2015 13:16

AW: Kann man den Datenbank Pfad vorgeben.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Uwe da kommt immer noch die Meldung

siehe Anhang

Daniel 23. Jan 2015 13:19

AW: Kann man den Datenbank Pfad vorgeben.
 
Du wirst ja irgendwo eine Komponente "TFDPhysIBDriverLink" verbaut haben.
Dort kannst Du in der Eigenschaft "VendorLib" mal ganz konkret den Pfad zu einer existierenden fbclient.dll eintragen.
Später zur Laufzeit wirst Du das natürlich an die jeweiligen tatsächlichen Gegebenheiten anpassen müssen. Für einen ersten Test auf Deinem eigenen System langt aber eine fixe Pfadangabe im Objekt-Inspektor.

//Edit:
http://docwiki.embarcadero.com/Libra...ink.VendorHome
und
http://docwiki.embarcadero.com/Libra...Link.VendorLib

DeddyH 23. Jan 2015 13:20

AW: Kann man den Datenbank Pfad vorgeben.
 
Und Du bist Dir zu 100% sicher, dass sich die 32Bit-Version mindestens einer der beiden DLLs im angegebenen Verzeichnis befindet?

ATS3788 23. Jan 2015 13:28

AW: Kann man den Datenbank Pfad vorgeben.
 
Perlsau

ja das macht Sinn was Du sagst
Ich lasse mein Applikation mit 64bit kompilieren, weil ich Firebird x64 installiert habe. Hier hatte ich noch 32 bit eingestellt Danke

Also

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
FDConnection.Connected := True;
FDTable1.Active := True;
end;
Nur der Grund warum ich den Firebird Server installiert habe.
weil es einfach ist mit einer aktiven Datenbank zu arbeiten.

Uwe Raabe 23. Jan 2015 13:36

AW: Kann man den Datenbank Pfad vorgeben.
 
Zitat:

Zitat von Daniel (Beitrag 1287569)
Du wirst ja irgendwo eine Komponente "TFDPhysIBDriverLink" verbaut haben.

Ist seit XE6 allerdings nicht mehr nötig - es sei denn, man möchte zur Entwurfszeit an den Parametern rumschrauben.

mkinzler 23. Jan 2015 13:38

AW: Kann man den Datenbank Pfad vorgeben.
 
Die Bittigkeit des servers ist aber nicht von Belang. Es geht um die, der Anwendung. Eine 32Bit-Anwendung benötigt die 32Bit Dll und funktioniert damit auch mit dem x64-Server.

Perlsau 23. Jan 2015 15:10

AW: Kann man den Datenbank Pfad vorgeben.
 
Zitat:

Zitat von ATS3788 (Beitrag 1287572)
Perlsau ja das macht Sinn was Du sagst
Ich lasse mein Applikation mit 64bit kompilieren, weil ich Firebird x64 installiert habe. Hier hatte ich noch 32 bit eingestellt Danke

Ein Sinn, denn du wohl irgendwie falsch interpretiert hast ...

Zitat:

Zitat von mkinzler (Beitrag 1287575)
Die Bittigkeit des servers ist aber nicht von Belang. Es geht um die, der Anwendung. Eine 32Bit-Anwendung benötigt die 32Bit Dll und funktioniert damit auch mit dem x64-Server.

@ATS3788:
Um genau dieser Verwechslung vorzubeugen, hatte ich oben bereits ausdrücklich darauf hingewiesen:

Übrigens sollte man nicht die 32-/64-Bit-Architektur der Datenbank-Anwendung, die jeweils eine 32-/64-Bit-Client-DLL benötigt, mit der 32-/64-Bit-Architektur des installierten Firebird-Servers oder gar des eingesetzten Betriebssystems verwechseln.

Mit anderen Worten: Du kannst auch den 64-Bit-Server deiner Firebird-Installation mit einer 32-Bit-Datenbankanwendung, die eine 32-Bit-fbclient.dll benötigt, ansprechen.

ATS3788 23. Jan 2015 15:53

AW: Kann man den Datenbank Pfad vorgeben.
 
Danke an euch allen.

Ich möchte mich noch mal sehr bei euch bedanken
das ihr so fähig und hilfsbereit sein.:thumb:

Also ich habe nun den 32 bit Server installiert und nun geht es wieder
wie ich möchte. Es liegt wohl daran das Delphi ein 32 bit Anwendung ist.
Ich kann ja dann zur Laufzeit die 64 bit Embedded laden.

Martin Michael

DeddyH 23. Jan 2015 15:56

AW: Kann man den Datenbank Pfad vorgeben.
 
Aber es lag doch eben nicht am Server. Wenn Du ein 32Bit-Programm hast, brauchst Du auch die 32Bit-DLL, bei einem 64Bit-Programm dann die 64Bit-DLL, da liegt der Hase im Pfeffer. Ob der Firebird-Server nun 32 oder 64 Bit hat, spielt dabei keine Rolle.

Uwe Raabe 23. Jan 2015 15:58

AW: Kann man den Datenbank Pfad vorgeben.
 
Zitat:

Zitat von ATS3788 (Beitrag 1287542)
fbclient.dll der sich bei mir
im Ordner C:\Program Files\Firebird_2_5\bin\ befindet.

Das ist dann offensichtlich die 64-Bit DLL.

Perlsau 23. Jan 2015 19:40

AW: Kann man den Datenbank Pfad vorgeben.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von ATS3788 (Beitrag 1287588)
Danke an euch allen. Ich möchte mich noch mal sehr bei euch bedanken das ihr so fähig und hilfsbereit sein.:thumb:

Wofür? Du hast ja offenbar noch immer nicht verstanden, daß die Wahl der DLL – ob jetzt 32- oder 64-bit – nichts mit deinem Firebirdserver zu tun hat, sondern mit der Anwendung, die du entwickelst. Kompilierst du für 32 Bit, dann benötigst du auch die 32-bittige fbclient.dll, ansonsten die 64-bittige.

Zitat:

Zitat von ATS3788 (Beitrag 1287588)
Also ich habe nun den 32 bit Server installiert und nun geht es wieder wie ich möchte. Es liegt wohl daran das Delphi ein 32 bit Anwendung ist.
Ich kann ja dann zur Laufzeit die 64 bit Embedded laden.

Nein, das hat nichts damit zu tun, ob deine Delphi-IDE eine 32- oder 64-Bit-Anwendung ist.

Mal ganz langsam zum mitmalen: Wenn du ein neues Projekt z.B. mit XE7 beginnst, dann legst du dir doch zuvor eine Ordnerstruktur an. In den Ordner, der deine 32-Bit-Binärdateien enthalten soll – Programmordner für 32-Bit-Programme – kommen die 32-Bit-DLLs hinein, in den Ordner für deine 64-Bit-Programme die 64-Bit-DLLs.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 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