AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Create Table mit Firebird und ZEOS, wie richtig machen

Create Table mit Firebird und ZEOS, wie richtig machen

Ein Thema von Jens Hartmann · begonnen am 26. Jan 2010 · letzter Beitrag vom 11. Feb 2010
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#1

Create Table mit Firebird und ZEOS, wie richtig machen

  Alt 26. Jan 2010, 11:14
Datenbank: Firebid • Version: 2.1 • Zugriff über: ZEOS
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.
Firebird
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:
Tabellenname "AREA" FELD1 "ID" FELD2 BEREICH
Das erstellen, habe ich folgdermaßen realisiert.
  Qry_Create.SQL.Text := 'CREATE TABLE AREA (ID integer, Bereich VarChar(50)'
Delphi-Quellcode:
var
  SL: TStrings;
  index: Integer;
begin
  SL := TStringList.Create;
  try
    DBCon.GetTableNames(SL, False);
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.

Danke schon mal

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Create Table mit Firebird und ZEOS, wie richtig machen

  Alt 26. Jan 2010, 11:28
Ich möchte Dir die Firebird-FAQ ans Herz legen. U.a. findet sich dort auch dieser Artikel: How to create a table only if it does not exist?

Hth
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Create Table mit Firebird und ZEOS, wie richtig machen

  Alt 26. Jan 2010, 12:16
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:
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 );"';
Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Create Table mit Firebird und ZEOS, wie richtig machen

  Alt 26. Jan 2010, 12:20
Da fehlt auch zumindest das END zum AS BEGIN.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Create Table mit Firebird und ZEOS, wie richtig machen

  Alt 26. Jan 2010, 12:28
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
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Create Table mit Firebird und ZEOS, wie richtig machen

  Alt 26. Jan 2010, 12:35
Besorg Dir doch einfach die Personal von IBExpert, die nimmt Dir schon einiges an Arbeit ab (z.B. Codegenerierung für Metadaten).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Create Table mit Firebird und ZEOS, wie richtig machen

  Alt 26. Jan 2010, 12:54
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
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Create Table mit Firebird und ZEOS, wie richtig machen

  Alt 26. Jan 2010, 12:58
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Create Table mit Firebird und ZEOS, wie richtig machen

  Alt 26. Jan 2010, 13:16
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:
select 1 from rdb$relations
where rdb$relation_name = 'EMPLOYEE')
Das ist eine normale Abfrage und ergibt 1, falls die Tabelle existiert.


Analog

SQL-Code:
Select Count(*) From RDB$Triggers
Where RDB$Trigger_Name='MyTriggerName'
Hier mal Count(*)

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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Create Table mit Firebird und ZEOS, wie richtig machen

  Alt 26. Jan 2010, 13:19
Du musst aber auch bis zum Ende lesen
Zitat:
This is fine, but now it seems you need to create a special stored procedure for this. Well, we use another new feature: EXECUTE BLOCK to make it a single statement:

SET TERM !! ;
EXECUTE BLOCK AS BEGIN
if (not exists(select 1 from rdb$relations where rdb$relation_name = 'EMPLOYEE')) then
execute statement 'create table employee ( id integer );';
END!!
SET TERM ; !!


Those SET TERM statements are only needed if you work from an administration tool like isql or FlameRobin. If you run it from your application code, just send the EXECUTE BLOCK block as a single statement.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz