Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird embedded Server mit IBObjects und PE 2005 (https://www.delphipraxis.net/98542-firebird-embedded-server-mit-ibobjects-und-pe-2005-a.html)

ProgrammerJoe 28. Aug 2007 23:03

Datenbank: Firebird embedded • Version: 2.0 • Zugriff über: IB_Objects

Firebird embedded Server mit IBObjects und PE 2005
 
Hallo,

habe die Evaluation-Version der IBObjecrs runtergeladen und in der Personal Edition 2005 installiert. Überraschenderweise hat es dabei keine Probleme gegeben (Core-Komponenten?).

Ich schaffe es aber nicht eine Verbindung zu einer Firebird (2.0 embedded) Datenbank aufzubauen.

Immer kommt die Fehlermeldung "Firebird/Interbase Client DLL ist nicht installiert."

Mit den Zusatzprogrammen kann ich aber eine Verbindung herstellen.

Ob gds32.dll oder fbclient.dll macht keinen Unterschied.

Alles liegt im Verzeichnis der Anwendung. Databasename und Path habe ich angegeben. Ich habe aber nirgendwo eine verdammte Property gesehen, wo man die Client DLL angeben kann.

Die gleiche Meldung kommt, wenn ich deren Example/Tutorial ausführe. Brauch ich dafür die BDE oder Datenbankunterstützung, die in der Personaledition nicht vorhanden ist? Firebird sollte doch eigentlich als embedded-Server bei bloßem Vorhandensein der dll laufen?

Wenn jemand Erfahrung zu diesem Thema hat, wäre ich für eine Hilfe sehr dankbar.

Kann man überhaupt problemlos in der PE-Edition mit den IBOjects oder anderen Komponenten mit Datenbanken arbeiten?

mkinzler 28. Aug 2007 23:05

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Zitat:

Kann man überhaupt problemlos in der PE-Edition mit den IBOjects oder anderen Komponenten mit Datenbanken arbeiten?
IBObejcts bringt ne eigen TDataSet-Implementierung mit.
Wo befindet sich deine Dll?

ProgrammerJoe 28. Aug 2007 23:07

Re: Firebird embedded Server mit IBObjects und PE 2005
 
im Verzeichnis der Anwendung. Ich habe alles in ein Verzeichnis gepackt. Muss ich die ins Windows-Verzeichnis setzen? Das wäre blöd.

Hansa 28. Aug 2007 23:38

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Zitat:

Zitat von ProgrammerJoe
...Kann man überhaupt problemlos in der PE-Edition mit den IBOjects oder anderen Komponenten mit Datenbanken arbeiten?

Glaubs kaum. Lässt die sich tatsächlich insallieren ? :shock:

TBx 28. Aug 2007 23:49

Re: Firebird embedded Server mit IBObjects und PE 2005
 
als überzeugter IBObjects-Nutzer muss ich erst mal protestieren:
@mkienzler: die IBOs haben auch ein eigenes Dataset, es gibt aber ebenso TDataSet-kompatible Komponenten
@Hansa: warum sollte sie nicht? Nur weil Jason beim ersten Installer mit der Lokalisierung nicht aufgepasst hat?
zur ursprünglichen Frage:

gleich mal ne Gegenfrage: Hast Du wirklich die embedded Version heruntergeladen und in das Verzeichnis gepackt? Ich frage deshalb, weil Du was von Zusatzprogrammen schreibst, die alle funktionieren. Diese werden aber nicht mit der Embedded Version distibuiert.

Ich habe vor einiger Zeit ein Projekt mit BDS2006, IBO und fbembedded 2.0 gemacht und hatte dabei keinerlei Probleme.

Gruß

Onlinekater

[Edit]Wer hnoch weitere Tippfehler findet, darf sie behalten :wall: [/Edit]

Hansa 29. Aug 2007 00:27

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Zitat:

Zitat von onlinekater
[Edit]Wer hoch weitere Tippfehler findet, darf sie behalten :wall: [/Edit]

Ein Hoch auf die Tippfehler. :lol: Ist IBObjects jetzt halb-kompatibel oder was ? :mrgreen:

P.S.: BDS 2005 ? Wo ist denn da eine Datasource, ein DBEdit usw. ?

TBx 29. Aug 2007 00:42

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Zitat:

Zitat von Hansa
Ist IBObjects jetzt halb-kompatibel oder was ?

hehe, könnte man fast so ausdrücken ...
Es gibt zum einen die TIB-Komponenten, die arbeiten mit einee eigenen Dataset-Implementation. Außerdem gibt es noch die TIBO-Komponenten, das sind Komponenten, die mit der DataSet-Implementation der VCL arbeiten. An diese kann man jede beliebige TDataSet-kompatible (Fremd)Komponente hängen.
Die ganzen Controls wie Calendar, Editfields, Datepicker usw. beruhen auf Jasons eigener Dataset-Implementation.
Die haben viele Vereinfachungen, die mit dem TDataset nicht machbar waren.
Die Kompatibilitätskomponenten gibts schon alleine deswegen, weil man ja auch mal an Reporte oder ähnliches ran will.
Mann kann prepared sql statements sehr einfach von den TIB-Komponenten in die TIBO-Komponenten übernehmen.

Hoffe, ich habe ein wenig Licht ins Dunkel gebracht.

Gruß

onlinekater

Hansa 29. Aug 2007 01:30

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Was ist denn da jetzt so gut dran ? Höre immer nur "Jason". Eventuell sehe ich den in 10/07. Wieso war es notwendig, zumindest in Teilen inkompatibel zu werden ? Wo liegt der Vorteil ?

mkinzler 29. Aug 2007 06:34

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Zitat:

@mkienzler: die IBOs haben auch ein eigenes Dataset, es gibt aber ebenso TDataSet-kompatible Komponenten
Have ich ja nicht bezweifelt, ging ja um die Tatsache, daß sie auch mit PE-Versionen funktioniert.

Hansa 29. Aug 2007 08:49

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Sollte das mit der PE funktionieren, dann müssen sie ja sogar DBEdit usw. neu erfunden haben oder nicht ? Man spart sich also eine richtige Delphi-Version und zahlt dann für IBObjects ? Was soll das im Endeffekt ?

hoika 29. Aug 2007 08:54

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Hallo,

um noch mal zur Frage zurückzuukommen,

Welche IBObjects-Version ?

FB2 wurde erst sehr spät unterstützt (siehe entwickler-forum.de)


Heiko

dataspider 29. Aug 2007 09:07

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Hallo Programmer Joe,

versuche mal, die Client - Bibliothek direkt anzugeben.
geänderter Ausschnitt meiner DPR:

Delphi-Quellcode:
uses
  Forms,
  // wegen IB_GetClientLibNameFunc
  IB_Session,
  ...

function GetFBClientLibName: string;
  begin
    // DLL - Dateiname mit kompl. Path
    Result := 'lw:\path\fbembed.dll';
  end;

{$R *.res}

begin

  IB_GetClientLibNameFunc := GetFBClientLibName;

  Application.Initialize;

  if not LoginDialog then
  begin
    // Achtung, sonst Exception, wird nicht ganz fertig
    Application.ProcessMessages;
    Exit;
  end;

  Application.CreateForm(TFRMMain, FRMMain);
  Application.Run;
Vielleicht hilft es ja,

Frank

TBx 29. Aug 2007 10:09

Re: Firebird embedded Server mit IBObjects und PE 2005
 
@mkienzler: tschuldigung, hab Deinen Kommentar leider mit zu dem Gestänkere eines anderen Forenusers hinzugezogen
@Hansa: In der Tat hat IBObjects eigene DBEdit, DBLookupCombo etc, eben für das IBObjects eigene Dataset.
@Hoika: Den Connect zu einer FB2.0 Datenbank haben auch die älteren IBO-Versionen geschafft, die Probleme kamen dann erst in den entsprechenden Statements auf.
@Threadersteller: Welche Zusatzprogramme nutzt Du und wie arbeitest Du mit denen?

Gruß
onlinekater

ProgrammerJoe 29. Aug 2007 18:57

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Ja, ich habe tatsächlich fb embedded 2.0 und die fbembed.dll in fbclient.dll, so wie es in der readme stand, umbenannt.

Ich habe http://www.ibobjects.com/IBO4_8_7_Eval.zip

Mit Zusatzprogrammen meine ich zum Beispiel IB_SQL.

@dataspider: danke für Dein Beispiel, das funktioniert bei mir zur Laufzeit und damit kann ich Daten auslesen.

Gibt es eine Möglichkeit, schon zur Designzeit im Objektinspektor eine Verbindung herzustellen?

Was meinst Du mit LoginDialog, bzw was muss ich dafür einbinden? LoginPrompt? Warum hast Du dieses if-statement eingebaut?

dataspider 29. Aug 2007 20:02

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Zitat:

Zitat von ProgrammerJoe
Was meinst Du mit LoginDialog, bzw was muss ich dafür einbinden? LoginPrompt? Warum hast Du dieses if-statement eingebaut?

Vergiß den Code ab Application.Initialize.
Der Rest entstammt von Copy and Paste - war nur zu faul, die Zeilen zu löschen.
Ich verlasse die Anwendung ohne das MaimForm zu erzeugen, wenn die Anmeldung nicht erfolgreich war.

Aber zur Frage Verbindung zur Entwurfszeit:

Wenn im Windows Systemverzeichnis eine fbclient.dll liegt, wird diese verwendet, auch wenn im Anwendungsverzeichnis ebenfalls eine fbclient.dll liegt. Die DLL im WinSys hat also Vorrang.

Daher solltest du prüfen, welche gds32.dll bzw. fbclient.dll Dateien auf deinem Rechner liegen.
Wenn du die fbembed.dll z.B. in fbclient.dll umbenennst und ins Windows Systemverzeichnis kopierst, sollte es auch zur Entwurfszeit funktionieren.

Cu, Frank

Hansa 29. Aug 2007 20:17

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Zitat:

Zitat von dataspider
Wenn im Windows Systemverzeichnis eine fbclient.dll liegt, wird diese verwendet, auch wenn im Anwendungsverzeichnis ebenfalls eine fbclient.dll liegt. Die DLL im WinSys hat also Vorrang.

Seit wann denn das ? :shock:

mkinzler 29. Aug 2007 20:19

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Nein, die Dll im Anwenderverzeichnis hat Vorrang.

TBx 29. Aug 2007 20:24

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Zitat:

Zitat von dataspider
Wenn im Windows Systemverzeichnis eine fbclient.dll liegt, wird diese verwendet, auch wenn im Anwendungsverzeichnis ebenfalls eine fbclient.dll liegt. Die DLL im WinSys hat also Vorrang.

Das stimmt so nicht.
Es wird über LoadLibrary versucht, die entsprechende Client-DLL zu laden.
Und da hat das Applicationsverzeichnis auf jeden Fall vorang vor dem Windows-Verzeichnis.
Eine Besonderheit gibt es allerdings: Es wird erst versucht, die fbclient zu laden, wenn das nicht klappt, wird versucht, die gds32 zu laden (wenn man nicht im Programm die entsprechende dll selbst zuweist). Dadurch ist es natürlich möglich, dass eine im Windows-Verzeichnis liegende fbclient angezogen wird, obwohl im Programmverzeichnis eine gds32 liegt.

Gruß

onlinekater

dataspider 30. Aug 2007 14:10

Re: Firebird embedded Server mit IBObjects und PE 2005
 
@Hansa, mkinzler, onlinekater

Ihr habt natürlich alle recht. Der Satz mit dem Vorrang was Quatsch.
Aber es ging um Connection zur Entwurfszeit.
Und dabei muss man dennoch darauf achten, das im Windows Systemverzeichnis die richtige dll liegt.

Die Frage ist, ob ein Firebird Server auf dem Entwicklungsrechner installiert ist und läuft.
In diesem Fall würde ich zur Entwurfszeit klassisch zugreifen.

Wenn aber kein Server laufen soll (warum auch immer), su muss ich dafür sorgen, dass alle benötigten Dateien der Delphi IDE zur Verfügung stehen. Das betrifft z.B. auch die fbintl.dll zur Unterstützung der CharSet's.
Somit muss z.B. auch das Verzeichnis intl von Firebird z.B. ins Bin-Verzeichis von Delphi kopiert werden.

Cu, Frank

Hansa 30. Aug 2007 14:22

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Zitat:

Zitat von dataspider
Somit muss z.B. auch das Verzeichnis intl von Firebird z.B. ins Bin-Verzeichis von Delphi kopiert werden.

Das stimmt ja schon wieder nicht. :mrgreen: TDatabase kriegt ja einen Namen zugewiesen. Steht der komplette Pfad da drin, dann ist INTL davon ein Unterverzeichnis. Steht nur der Dateiname da drin, dann muss INTL ein Unterverzeichnis, des Ordners sein, in dem das Programm liegt. Obwohl, muss INTL nicht sowieso ins Programmverzeichnis ? ? :gruebel: Zumindest hat das nichts in irgendeinem Delphi-Vereichnis zu suchen. Da wird eventuell ein Suchpfad hin gesetzt werden. Ohne Delphi wirst du dann aber dumm dastehen.

mkinzler 30. Aug 2007 14:27

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Die Aussage stimmt aber unter der Premisse, daß die Anwendung mit fbembedded ausgeliefert wird.

dataspider 30. Aug 2007 15:49

Re: Firebird embedded Server mit IBObjects und PE 2005
 
@Hansa

ich habe doch nun schon Entwurfszeit fett geschrieben, was soll ich denn noch tun, um zu verklickern, dass es ausschliesslich um die Entwurfszeit geht?
Probier es doch einfach mal aus.
Setze im OI Connected einer TIB_Connection auf True und vergiss nicht, vorher ein CharSet anzugeben.
Dann kommt die fehlermeldung: CHARACTER SET blabla not defined...

Bei mir funktioniert es nur, wenn das Verzeichnis intl unter Bin (Delphi) liegt.

Frank

ProgrammerJoe 30. Aug 2007 21:16

Re: Firebird embedded Server mit IBObjects und PE 2005
 
Also danke erstmal für die Hilfe.

Damit das zur Entwurfszeit funktioniert, muss ich alle dll's (nicht nur die fbclient.dll) entweder nach system32 oder delphi/bin kopieren.

Ich will in meinem Installer das system32 Verzeichnis nicht anfassen. Also kommt wohl nur Laufzeit zum Arbeiten in Frage. Zusätzlich müßte ich auch die conf anpassen und ihr sagen, wo die Datenbank liegt. Das will ich alles nicht und anders gehts wohl nicht, denn mein Anwendungsverzeichnis (eigene Dateien\Borland Projekte\etc...) wird komplett ignoriert.

Da ich nur eine Desktopanwendung erstellen will, will ich und brauche ich keine komplette Firebird-Installation. In die wichtigen Teile der Komponenten kann ich wahrscheinlich nicht reingucken, da ich das Evaluation-Package habe.


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

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