Home Navigationspfeil Tutorial Firebird, Lazarus & Zeos I Navigationspfeil Formular Firebird Datenbank Inhalte mit Zeos erstellen

Formular Firebird Datenbank Inhalte mit Zeos erstellen

Zum Anlegen von Tabellen, Generatoren, Triggern, Views, Stored Procedures, Functions, System Tables, Domains, Roles, Exceptions und Usern benötigt man eine andere Komponente.

Am besten eignet sich ZSQLProcessor dafür. Das werden wir im Programmteil "SQL Skripts bearbeiten" durchführen.

 

In der Procedure "TFormTABAnlegenSQL.FormCreate" werden die von "ZConnectionFirebird" benötigten Werte mittels INI-Datei eingelesen und "ZConnectionFirebird" zugeordnet. Diese können aber auch nach einer kleinen Programmänderung in den entsprechenden Eingabefeldern angepasst werden, um auch andere Datenbanken zu bearbeiten. Zusätzlich zu den Eingabefeldern, welche wir auch beim Datenbank erstellen verwendet haben gibt es auf diesem Formular:
"Delimiter einstellen" und "Standard-Delimiter". Auf "Delimiter einstellen kommen wir gleich zu sprechen, "Standard-Delimiter" ist der in SQL-Scripts verwendete Befehlstrenner, ein Semikolon.

In der Procedure kann der Delimiter für spezielle SQL-Befehle, welche ein Semikolon mitten im Befehl verwenden, anders eingestellt werden. Hier müssen wir ein bisschen weiter ausholen.

In SQL und ISQL (Interbase-SQL) gibt des die Möglichkeit den Standard-Delimiter ";" mittels des Befehls "SET TERM" zu ändern. Notwendig ist dies bei einer SQL-Sequenz wie dieser (stammt aus employee.sql):


SET TERM ^ ;

CREATE PROCEDURE ADD_EMP_PROJ (
    EMP_NO Smallint,
    PROJ_ID Char(5) )
AS
BEGIN SUSPEND; END^
SET TERM ; ^


 BEGIN SUSPEND; END^
Das Semikolon hier ist Teil des SQL-Befehls und nicht das Ende des SQL-Befehls. Normalerweise würde die Erstellung der STORED PROCEDURE hier abgebrochen. Durch "SET TERM ^ ;" wird der SQL-Ausführungsroutine mitgeteilt, dass der Standard-Delimiter (Trennzeichen zwischen zwei SQL-Statements/Befehlen) von ";" auf "^" ausgetauscht ist. Das heißt, dass das Ende von "CREATE PROCEDURE .. " dass dem "END" folgende "^" ist statt des normalerweise verwendeten Semikolons. Der Befehl am Ende "SET TERM ; ^" macht das rückgängig, das heißt der Standard-Delimiter ist jetzt wieder ";".

Das wäre kein großes Problem, aber Firebird hat in seinem SQL "SET TERM" nicht implementiert. Die gängigen Datenbankverwaltungsprogramme haben das intern im Programm gelöst. Das hilft uns hier aber nicht weiter. So haben die Entwickler von Zeos in die Komponente TSQLProcessor die Möglichkeit eingebaut den Standard-Delimiter zu ändern. Es gibt 5 Möglichkeiten zum Einstellen: Default, dtDelimiter,  dtEmptyLine,  dtGo und dtSetTerm.

Für uns für unsere Aufgaben sind 2 Einstellungen  relevant:

 dtDefault: wenn im SQL-Befehl intern kein Semikolon verwendet wird
dtSetTerm: wenn intern im SQL-Befehl ein Semikolon verwendet wird

Standard Delimiter zeigt an welcher Character in den Properties von TZSQLProzessorFirebird.Delimiter eingestellt ist und braucht, soweit ich das verstehe für unsere Aufgaben nicht geändert werden. 

Der Button "SQL Script laden" lädt eine SQL-Datei und zeigt diese in der Komponente SynEdit1 an. Damit die SQL-Statements besser dargestellt werden können, ist dieser die "SynSQLSyn1"  im Parameter "Highlighter" zugeordnet.

Sollte der Script bearbeitet worden sein, so kann er mit "SQL Script speichern" gespeichert werden. Wenn der gleiche Dateiname verwendet wird, gibt es eine Sicherheitsabfrage, damit die Datei nicht überschrieben wird. Sollte nach eine Änderung eine andere SQL-Datei geladen werden gibt es keine Sicherheitsabfrage - da kann, wer will, üben wie man so was bewerkstelligt ;-).

"Bearbeitung beenden" schließt das Fenster.

Für uns am meisten interessant ist was in der Procedure "TFormTABAnlegenSQL.Button1Click" passiert. Dies ist die eigentliche Verarbeitung des SQL-Befehls:

dmZeosFirebird.ZConnectionFirebird.Connect:
Verbindet ZConnectionFirebird mit der Datenbankdatei.

dmZeosFirebird.ZSQLProcessorFirebird.Script:= SynEdit1.Lines:
Übergibt den in den SynEdit1.Lines dargestellten SQL-Code an den "Processor". Der SQL-Code kann auch direkt von einer Datei geladen werden mittels "LoadFromFile" ("ZSQLProcessorFirebird.LoadFromFile").

Als Vorlage für das Laden einer Datei kann die Procedure "TFormTABAnlegenSQL.Button2Click" verwendet werden.

dmZeosFirebird.ZSQLProcessorFirebird.Execute:
Sorgt dafür dass der übergebene SQL-Code in der Datenbank ausgeführt wird.

dmZeosFirebird.ZConnectionFirebird.Connected := false:
Bricht die Verbindung zur Datenbank ab, damit diese nicht blockiert ist.

Jetzt kann eine weitere SQL-Datei geladen oder mit dem Editor erstellt werden. Das Absetzen von SQL-Befehlen werden wir im nächsten Menüpunkt "Firebird SQL Befehle mit Zeosfirebird" behandeln.

 <>

 

© CMBasic.de