![]() |
Datenbank: Firebid • Version: 2.1 • Zugriff über: ZEOS
Create Table mit Firebird und ZEOS, wie richtig machen
Hallo zusammen,
ich hab ml wieder eine Frage zum erstelle von Tabellen während der Laufzeit. Es ist kein Problem gewesen, für mich dieses zu realisieren. Allerdings verstehe ich es noch nicht so richtig, wie ich einen PK inkl. Trigger und Generator anlege und vorallem wie ich vorher prüfen kann, ob die Tabelle vieleicht schon existiert. Ich habe über die DR und DP schon gesucht, allerdings noch nicht mit dem richtigen Erebnis. Hier habe ich zwar einen Thread gefunden der dies beschreibt, aber so richtige weiß ich nicht ob das das Richtige ist. ![]() Ich möchte während dem Programm eine Tabelle erstellen, die folgende Eigenschaften hat, und vorher allerdings prüfen, ob Sie eventuell schon vorhanden ist.
Code:
Das erstellen, habe ich folgdermaßen realisiert.
Tabellenname "AREA" FELD1 "ID" FELD2 BEREICH
Delphi-Quellcode:
Qry_Create.SQL.Text := 'CREATE TABLE AREA (ID integer, Bereich VarChar(50)'
Delphi-Quellcode:
Jetzt die Frage, wie gehe ich jetzt da mit weiter vor. Wie erstellen ich den Trigger und GEN richtig. Wie prüfe ich richtig ob die Table schon vorhanden ist. Gibt es irgenwie dazu ein Tutorial für ZEOS und Firebird, wo das erklärt wird.
var
SL: TStrings; index: Integer; begin SL := TStringList.Create; try DBCon.GetTableNames(SL, False); Danke schon mal Gruß Jens |
Re: Create Table mit Firebird und ZEOS, wie richtig machen
Ich möchte Dir
![]() ![]() Hth |
Re: Create Table mit Firebird und ZEOS, wie richtig machen
Hallo DeddyH,
danke erstmal für die schnelle Hilfe. Die Seite kenne ich schon, und die Funktion habe ich auch schon versucht. Allerdings, bekomme ich bei folgendem Code eine Fehlermeldung zurück.
Delphi-Quellcode:
Gruß Jens
Qry_CreateTableArea.SQL.Text :=
'EXECUTE BLOCK AS BEGIN if (not exists(select * from AREA where rdb$relation_name = "EMPLOYEE")) then execute statement "CREATE TABLE AREA ( ID Integer, BEREICH String );"'; |
Re: Create Table mit Firebird und ZEOS, wie richtig machen
Da fehlt auch zumindest das END zum AS BEGIN.
|
Re: Create Table mit Firebird und ZEOS, wie richtig machen
Ja, richtig. Ist trotdem nicht besser. Gibt es denn nicht irgendwie einen Compiler, der mir das wie bei einem Delphi-Code anzeigt, wenn da was noch nicht stimmt.
Ich habe irgendwie immer Problem mit den Codeteilen SQL. Gruß Jens |
Re: Create Table mit Firebird und ZEOS, wie richtig machen
Besorg Dir doch einfach die Personal von IBExpert, die nimmt Dir schon einiges an Arbeit ab (z.B. Codegenerierung für Metadaten).
|
Re: Create Table mit Firebird und ZEOS, wie richtig machen
Hab ich, damit erstell ich auch bislang meine Tabellen. Allerdings, wollte ich das erstellen der Tabellen auch über die Aplication realisieren, um gewisse Änderungen oder Neuerungen in die DB zu integrieren.
Mein Problem ist, die Funktion, wie die Table erstellt wird, finde ich ja scheinbar unter DLL im Table Explorer. Allerdings, komme ich nicht so richtig damit klar, diesen Code in Delphi zu integrieren. Gruß Jens |
Re: Create Table mit Firebird und ZEOS, wie richtig machen
Es gibt doch da auch die schöne Funktion "Metadaten extrahieren" oder so ähnlich, die müsste auch in der Personal verfügbar sein. Damit wird Dir ein komplettes DB-Script erstellt samt aller Schlüssel. Das solltest Du Dir mal ansehen.
|
Re: Create Table mit Firebird und ZEOS, wie richtig machen
Hallo,
im obiegn Link steht doch asudrücklich and you can't use IF outside of PSQL, you can use EXECUTE STATEMENT in PSQL. PSQL = Stored Procedure Aber
SQL-Code:
Das ist eine normale Abfrage und ergibt 1, falls die Tabelle existiert.
select 1 from rdb$relations
where rdb$relation_name = 'EMPLOYEE') Analog
SQL-Code:
Hier mal Count(*)
Select Count(*) From RDB$Triggers
Where RDB$Trigger_Name='MyTriggerName' Analog hierzu die Generatoren Tabelle RDB$GENERATORS FeldName RDB$GENERATOR_NAME Die RDB$-Tabellen sind übrigens System-Tabellen, die sich auch unter dem oben erwähnten IBExpert anzeigen lassen und gehören zum sogenannten Schema der Datenbank. Heiko |
Re: Create Table mit Firebird und ZEOS, wie richtig machen
Du musst aber auch bis zum Ende lesen ;)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 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