Zitat von
Jens Hartmann:
Das mit der Abfrage ob die Tabelle vorhanden ist klappt allerdings nicht.
Delphi-Quellcode:
Qry_CreateTableArea.SQL.Text :=
'SELECT 1 FROM rdb$relations where rdb$relation_name = "AREA"';
Qry_CreateTableArea.Open;
Es ist immer von Vorteil sich die Fehlermeldung anzusehen, oder wenigstens zu posten.
Ich vermute mal die lautete
Das liegt an den doppelten Anführungsstrichen. Die Angaben innerhalb der doppelten A.. interpretiert
Firebird als Feldnamen. Deshalb auch "Column unknown".
Du suchst aber einen String 'AREA' im Feld RDB$RELATIONS_NAME in der Tabelle RDB$RELATIONS!
Und ein String muß in einfache Anführungsstrichen eingeschlossen sein.
Zitat von
Jens Hartmann:
Wie muss ich das mit dieser Anweisung denn verstehen. was und wo befinden sich diese beiden Datenbanken/Tabellen oder so. Wenn ich das richtig verstanden habe, sind diese in meiner
DB integriert. Mit
In einer Firebird-Datenbank existieren ein ganze Reihe Systemtabellen RDB$.., MON$...
In den RDB$-Tabellen werden alle Metadaten, also die Struktur der Datenbank verwaltet.
D.h. deine Tabelle 'AREA' findest du in der Tabelle RDB$RELATIONS, die dazu gehörigen
Felder in der Tabelle RDB$RELATION_FIELDS wieder.
Diese Systemtabelle können ganz normal mit SELECT abgefragt werden.
Angezeigt werden die Systemtabellen z.B. bei IBExpert nur, wenn man das entsprechende Häkchen für "Systemtabellen anzeigen" setzt.
Achtung! Es ist sicher lehrreich sich die Tabellen anzusehen. Auf keinen Fall sollte man aber die
Inhalte der Tabelle ändern. Es sei den man weiß genau was man macht und hat ein Backup der Datenbank.
Ich habe es bisher unterlassen, bis auf eine Ausnahme.
alex