BCB6 und Firebird 2.0 - Datenbankverbindung



  • Hallo,
    Ich versuche seit einem längeren Zeitraum mich mit BCB6 zu einer Firebird Datenbank zu verbinden.
    Nun habe ich schon durch die Forum-Suche viele Information gesammelt, aber leider reicht es bisher nicht aus.
    Folgendes habe ich versucht:

    1)Query ausgewählt und DataBaseName auf MANDAT1.gdb gesetzt, SQL-Abfrage mit Stringeditor erzeugt
    2)DataSource ausgewählt und Eigenschaft DataSet auf Query1 (SQL-Abfrage) herausbekommegesetzt.
    3)DBCtrlGrid1 ausgewählt und Eigenschaft DataSource auf DataSource1 gesetzt.
    4)DBText ausgewählt und auf DBCtrlGrid1 platziert. DataSource auf DataSource1 gesetzt, DataField auf dein benötigtes Tabellen-Feld setzen.
    (siehe: http://www.c-plusplus.net/forum/viewtopic-var-t-is-147041-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-*firebird*-and-start-is-10.html)

    Nur leider gibt es immer eine Fehlermeldung, wenn ich die Eigenschaft DataField von DBText setzten will.
    Invalid directory.
    Directory: C:\MANDAT1.gdb
    oder
    Unkonown database.
    Alias: MANDAT1.gdb
    Je nach dem ob ich mit oder ohne Pfadangabe die Eigenschaft DataBaseName von Query setze.

    Mein Vater hat mir eine *.gdb Datei gegeben, im Forum lese ich aber immer von *.fdb Dateien, ich weiß nicht ob das schon ein Problem darstellt.
    Ich habe die Verbindung aber auch mit *.fdb Dateien versucht, ohne Erfolg.

    Ich habe auch gelesen, dass man eine Datei mit dem Namen fembeded.dll
    aus dem Firebird-Verzeichnis in das Projektverzeichnis kopieren soll und in fbclient.dll umbennen soll.
    Leider ist die Datei fembeded.dll nicht in meinem Firebirdinstallationsverzeichnis vorhanden, nur eine
    Datei mit dem Namem fbclient.dll. Also habe ich die Datei dann genommen.
    (Ich verwenden Firebird 2.0)

    Vieleicht ist es noch wichtig, dass ich Firebird nicht als Dienst sondern als Anwendung installiert habe.

    Ich weiß einfach nicht mehr weiter.
    Ich würde mich über jeden hilfreichen Beitrag freuen.



  • Falsche Komponenten für den Zugriff auf Firebird. Außerdem reicht die GDB-Datei nicht. Firebird ist ein SQL-Server und keine lokale Datenbank, wie Paradox. Allerdings gibt es für Firebird eine Embedded-Version.

    Lad Dir von hier die Embedded-Version herunter: http://www.firebirdsql.org/
    Folge den Anweisungen und kopiere die gdb dazu. Dann hast Du zumindest schon mal die Möglichkeit auf die Datenbank zuzugreifen, ohne den kompletten Server zu installieren.

    Aber Du mußt auch andere Zugriffskomponenten verwenden. Wenn es darum geht, nur ein paar Daten auszulesen, kannst Du die Interbase-Komponenten verwenden, die einigen BCB-Versionen beiliegen. Die sind aber mir vorsicht zu genießen.
    Besser wäre der Einsatz von Fremdkomponenten, wie zb die ZEOS- oder die IBX-Komponentesammlung. Oder wenn Du Geld investieren möchtest, kann ich Dir nur IBObjects empfehlen. Die FIBPlus-Komponenten sind ebenfalls recht gut, aber ebenfalls auch kostenpflitig.



  • Danke für deine Antwort.
    Da ich nur ein paar Daten auslesen will, denke ich das die Interbase-Komponenten das richtige für mich ist.
    Leider schaffe ich es nicht etwas damit auszulesen.
    Die Borland-Hilfe bringt mich dabei leider nicht weiter und im Internet habe ich
    mich auch schon tot gesucht.
    Das ist mir noch zu kompliziert.
    Es wäre schön, wenn mir jemand eine kurze Schritt für Schritt Anleitung posten könnte, nur damit ich ungefähr weiß was ich machen muss.
    Bin jetzt schon seid fast einer Woche dran und der Fortschritt ist gleich NULL.
    Bin für jede weitere Hilfe sehr dankbar.



  • Hallo,

    Was genau ist denn dein Problem? Was hast du schon versucht?
    Ich hatte mal eine kleine Word-Datei mit der Verwendung der Interbase-Komponenten erzeugt (wirklich nur ganz kurz). Wenn du willst kann ich sie dir ja mal zumailen.



    1. Verwende IBDatabase und setzt die Eigenschaft DatabaseName auf C:\DATA.GBD
    2. Verwende IBQuery und setzte die Eigenschaft Database auf IBDatabase1
    3. Setzte die Eigenschaft SQL von IBQuery (mit voheriger Login-Abfrage)

    Wie schaft man es jetzt die Datensätze der Abfrage auf dem Bildschirm zu bekommen?
    Werden die Login-Daten gespeichert? Oder muss ich die immer wieder von neuen bei der Programmausführung eingeben?

    Danke!



  • Meine Mail-Adresse: marry-fitch web.de



    1. Verwende IBDatabase und setzt die Eigenschaft DatabaseName auf C:\DATA.GBD
    2. Verwende IBQuery und setzte die Eigenschaft Database auf IBDatabase1
    3. Setzte die Eigenschaft SQL von IBQuery (mit voheriger Login-Abfrage)

    Ein weiterer Versuche:
    4) Verwende DataSource und setzte die Eigenschaft DataSet auf IBQuery1
    5) Verwende DBGrid und setze die Eingenschaft DataSource auf DataSource1

    Ich habe momentan keine Ahnung was ich noch ausprobieren soll.
    Ich erhalte keine Ausgabe. Ich weiß nicht mal ob ich irgenteine Aktion
    ausführen muss bevor ich überhaupt Datensätze erhalten kann. 😕

    Das Passwort der Datenbank muss ich auch immer vor jedem Ausführen eingeben.
    Kann man das nicht einfach im Programm hinterlegen?

    plz Help
    So jetzt bleibe ich erstmal wieder Geduldig.



  • Sieh dir den Abschnitt Datenbank in der FAQ an. Da geht es zwar i.d.R. auch nicht direkt um Interbase/Firebird, die grundlegenden Prinzipien sind aber bei allen DB-Komponenten gleich oder ähnlich.



  • Ich weiß nich ob das richtig ist was ich in meinem letzten Beitrag beschrieben habe.

    Folgende Probleme gibt es:

    1. Die Eigenschaft DatabaseName von IBDatabase kann man nur auf *.gdb Dateien setzten nicht auf *.fdb Dateien (kein tragisches Problem, wundert mich nur)

    2. Wenn ich so vorgehe wie oben von mir beschrieben und dann mit IBQuery1->Open(); die ganze Geschicht ausführen will, bekomme ich folgende Fehlermeldung: Transaction not assigned

    Folgende Frage:
    Ich habe Firebird2.0 bei mir installiert, von meinem Vater habe ich eine Firebird Datenbankdatei Datei bekommen, muss ich die jetzt noch irgentwie importieren? Oder reicht es wenn die Datei einfach igrentwo auf der Festplatte liegt, was ich bisher dachte.

    Ich danke euch allen für eure Zeit die ihr für mich geopfert habt.
    Es tut mir leid, dass ich vieleicht für euch dumme Fragen stelle, aber ich kenne mich noch nicht so in der Borland-Welt aus.



  • hier nochmal die Vorgehensweise für Interbase/Firebird:

    - IBDataBase aufs Form legen, dann die Komponente doppelklicken, in dem Editor kann man jetzt den Datenbanknamen (bei "Local" reicht eine normale Pfadangabe), Username und Passwort angeben, außerdem kannst du den Haken bei "Login Prompt" rausnehmen
    - IBTransAction aufs Form legen und die IBDataBase-Komponente als DefaultDataBase einstellen
    - IBQuery, DataSource und DBGrid aufs Form legen, im IBQuery eine beliebige SQl-Abfrage, z.B. "select * from 'tabellenname'", eingeben und die Komponenten miteinander verknüpfen, hierbei die TransAction auf die vorher eigestellte IBTransAction setzen

    - zum Testen kann man jetzt die IBDataBase -> Connected im Objektinspektor auf true stellen und auch das IBQuery aktivieren, dann sollte das DBGrid automatisch, auch zur Entwurfszeit, gefüllt werden



  • Super es funktioniert.
    Besten Dank an Linnea und alle anderen die mir geholfen haben.


Anmelden zum Antworten