Nun ja, ich verwende als Tabellenkomponente UIBDataSet und wenn ich das Projekt in Delphi lade, erhalte ich den Fehlerdialog, der auch erscheint, wenn ich ein Projekt lade, das eine in meinem Delphi nicht installierte Komponente voraussetzt.
Das hat aber weder was mit Firebird noch überhaupt mit Datenbanken zu tun, sondern betrifft deine Entwicklungsumgebung.
Die Fehlermeldung lautet dann:
Oh, eine geheime Fehlermeldung
Ich habe jetzt auch das Feld Hostname leer gemacht aber eine Komponente UIBServerInfo mit drin, bei der ich die Eigenschaft Protocol mit "proLocalHost" belegt habe.
Das
Protokoll ist nicht der
Host. Du würdest doch sicher auch nicht in ein Property-Feld, das die Breite deines Fensters beschreibt, den Text "Grün" hineinschreiben, oder?
Das Problem mit der Zugriffssperre besteht weiter.
Hast du meinen Beitrag überhaupt gelesen und verstanden? Hast du den Kommentar von Thomas Steinmaurer gelesen und verstanden?
Wie aber kann ich nun den Zugriff auf meine Datenbank erreichen?
Das steht in meinem Beitrag ausführlich beschrieben.
Ich habe die Datenbank tatsächlich mit IBExpert angelegt. Aber was kann ich jetzt tun, um die Datei zu entsperren?
Das steht in meinem Beitrag ausführlich beschrieben.
Zitat von
Perlsau:
Ich empfehle daher ausdrücklich, auch Embedded-Versionen einer Firebird-Datenbankanwwendung erst als Server-Version zu entwickeln.
Gefällt mit überhupt nicht. Wollte mir mit der Embedded Version das Zugriffsrechtemenagement erst mal sparen. Wollte wie beim guten alten DBase die Datei anlegen, die Felder definieren und dann mit der Datei arbeiten. Schade, das das hier nicht so simpel ist.
Wenn's dir nicht gefällt, läßt du's eben sein und beschäftigst dich mit etwas anderem ...
Zitat von
Perlsau:
Ich verwende zur Unterscheidung einfach die Startparameter. Solange ich mit der Embedded-Version arbeite, steht bei mir in den Startparametern 1 E:\Datenbanken\Win7\Firebird\ drin. Bei Programmstart werden die ausgelesen und ausgewertet: 1 heißt Server, 0 oder gar nichts heißt Embedded. Steht 0 zusammen mit einem Pfad, liegt die
DB in diesem Pfad, fehlt der Pfad, liegt die
DB im Anwendungsordner (nur für Stickware, da ab Vista für das Schreiben in Program Files Admin-Rechte benötigt werden).
Hmmm. Mein Firebird Server liegt in C:\Programme\Firebird\, von da an voreingestellte Pfade.
Meine Embedded Version liegt einmal im Ordner meines Delphi Projektes und noch einmal in D:\Programme\Borland\
BDS\4.0\Projects\Firebird-Embedded\
Wo dein Firebird-Server installiert wurde, ist erstmal nebensächlich. Die Datenbank-Dateien können sonstwo liegen. Auch der Speicherort deiner Embedded-Version ist nur wichtig für deine Anwendung, um die Datenbank-Datei zu finden.
Aber in einer Kommandozeile zuerst eine Ziffer????
Von einer Kommandozeile habe ich nichts geschrieben. Kennst du deine
IDE überhaupt? Hast du schon einmal eine Anwendung mit Parametern gestartet? In deiner Delphi-
Ide gibt es im Menü Start doch den Menüpunkt Parameter, nicht wahr? Und dort trägst du die gewünschten Parameter ein. Das hat denselben Effekt wie der Aufruf einer Exe-Datei mit Parametern, z.B. MeinProgramm.exe minimiert grün ... Was hast du gegen eine Ziffer am Anfang einzuwenden?
Oder sieht die wirkliche Kommandozeile dafür anders aus? Wenn ja, wie? Dann übernehme ich nämlich diese Vorgehensweise.
Keine Ahnung, was du mit "wirkliche Kommandozeile" meinst.
Habe jetzt bei den Komponenten UIBConfig, UIBDataBase und UIBServerInfo die Eigenschaft LibraryName, die vorher auf gds32.dll gesetzt war, auf den Pfad meiner fbclient.dll des Firebird Servers gesetzt und damit kann ich erst mal ohne die Fehlermeldung die Datenbank aufrufen, das heißt, meine Anwendung startet ohne die vorherige Fehlermeldung. Ich kann aber noch immer keine Daten in meine Tabelle eigeben. Was muß ich dazu noch machen?
Wie versuchst du denn Daten einzugeben? Ich kann dir hier doch nicht dein ganzes Programm schreiben ...
Wenn ich meine Anwendung aber außerhalb der
IDE starte, bekomme ich die
GUI nicht zu sehen, nach ca 60 Sekunden sagt mir Windows, das meine Anwendung einen Fehler verursacht hat und beendet werden muß. Ich muß sie dann im Taskmanager suchen und dort beenden. Im Taskmanager sehe ich meine Anwendung also.
Tja, ich fürchte, ohne auch nur eine Zeile Code kann man dir nicht wirklich weiterhelfen.
Außerdem hatte ich nach der
SQL Anweisung:
CREATE TABLE meinetabelle(feld1 char(12),feld2 BIGINT, feld3 char(10));
bei Start nach dem Anlegen der Tabelle, die mittlerweile angelegt ist, die Fehlermeldung, das die Tabelle bereits existiert.
Ja, wenn sie bereits existiert, kannst du sie nicht nochmal unter demselben Namen anlegen. Mir war gerade so, als ob du oben geschrieben hättest, du würdest deine Datenbank mit IbExpert anlegen und einrichten ...
Nun weiß ich von
MySql, das es da eine Klausel "IF NOT EXISTS" gibt (CREATE TABLE IF NOT EXISTS meinetabelle (Feld1 Typ,Feld2 Typ,...);. Die Klausel "IF NOT EXISTS" wird aber hier als Fehler angemeckert. Wie kann ich da das
DB-System anweisen, die Tabelle nur dann zu erzeugen, wenn sie noch nicht existiert? Andernfalls soll besser ein SELECT * FROM meinetabelle erfolgen, damit ich meine Daten anzeigen kann.
Wieso willst du denn die Tabelle bei jedem Start anlegen? Lege sie doch einmalig im IbExpert an und gut ist!