ZEOS Library – Einsatz mit Delphi und Firebird
Beispielprojekt: „EasyQuery“
Damit dieses Tutorial nicht all zu trocken wird, möchte ich an dieser Stelle den Einsatz der ZEOS Komponenten anhand eines sehr einfachen Beispiels demonstrieren. Erstellt wird ein kleines Programm, das auf die Tabellen Customer und Country der Beispieldatenbank Employee zugreift. Mit diesem Programm kann in der Customer-Tabelle navigiert und deren Daten auch editiert werden. Damit es aber nicht ganz langweilig wird, ist hier noch ein kleines Schmankerln eingebaut: Eine DBLookupCombobox für das Tabellenfeld COUNTRY. Dieses Feld ist nämlich ein Forign Key und verbunden mit dem Feld COUNTRY der gleichnamigen Tabelle.
Nun aber an die Arbeit!
Zuerst wird in Delphi ein neues Projekt erstellt. Zur standardmäßig angelegten TForm wird nun noch ein DataModule erstellt.
Folgende Properties des DataModule werden gesetzt: Name: dmEasyQuery
Komponenten für das Datenmodul
TZConnection
Database:
- Employee.fdb
Name:
- conEmployee
Password:
- „Passwort“
Protocol:
- firebird-1.5
ReadOnly:
- False
TransactionIsolationLevel
- : tiReadCommitted
User:
- „Benutzername“
TZQuery
Connection:
- conEmployee
Name:
- qryCustomer
RequestLive:
- True
SQL:
- SELECT * FROM customer ORDER BY customer
UpdateObject:
- updCustomer
zusätzlich: persistente TFields aller Tabellenfelder über Feld-Editor erstellen!
Das OnAfterPost-Ereignis von qryCustomer wird wie angegeben ausprogrammiert:
procedure TdmEasyQuery.qryCustomerAfterPost(DataSet: TDataSet); begin // Refresh der Ergebnismenge, um die im DBGrid dargesetllten Daten // neu zu sortieren. qryCustomer.Refresh; end;
TZReadOnlyQuery
Connection:
- conEmployee
Name:
- roqryCountry
SQL:
- SELECT country FROM country ORDER BY 1
zusätzlich: persistente TFields aller Tabellenfelder über Feld-Editor erstellen!
TZUpdateSQL
DeleteSQL:
- über UpdateSql Editor
InsertSQL:
- über UpdateSql Editor
ModifySQL:
- über UpdateSql Editor
Name:
- updCustomer
Die Delete-, Insert- und Modify-Statements für das UpdateSQL-Objekt werden mit dem UpdateSQL-Editor automatisch erzeugt. Der Editor wird mit einem Doppelklick auf die UpdateSQL-Komponente gestartet. Als KeyField wird das Feld CUST_NO in der gleichnamigen Liste markiert. Die Felder ADDRESS_LINE1, ADDRESS_LINE2, CITY, STATE_PROVINCE, COUNTRY und POSTAL_CODE werden als Update Fields in der Liste Update Fields markiert. Über den Button Generate SQL werden die gewünschten SQL- Statements erstellt. Bei solch einfachen Queries erspart der UpdateSQL-Editor lästige Tipparbeit. Wird es ein wenig komplexer, sollte man die benötigten Statements „von Hand“ erstellen.
TDataSource
DataSet:
- sqlCustomer
Name:
- dsCustomer
TDataSource
DataSet:
- rosqlCountry
Name:
- dsCountry
Nun wird das soeben erstellte DataModule unter dem Namen dm_EasyQuery.pas abgespeichert.
Komponenten für das Formular
Die TForm erhält folgende Komponenten und wird wie folgt initialisiert:
Properties:
Caption:
- Easy Query Demo
Name:
- frmEasyQuery
Im Interface der Unit muss zur uses-Klaussel noch dm_EasyQuery hinzugefügt werden, damit der Zugriff auf die Datenbankkomponenten möglich wird.
Folgende Ereignisse der TForm werden wie angegeben ausprogrammieren:
OnCreate:
Die Verbindung zur Datenbank wird erst hergestellt, wenn die Form erzeugt wird. Nach Herstellen der Verbindung, werden die Queries geöffnet:
procedure TForm1.FormCreate(Sender: TObject); begin dmEasyQuery.conEmployee.Connect; dmEasyQuery.qryCustomer.Open; dmEasyQuery.roqryCountry.Open; end;
OnDestroy:
procedure TForm1.FormDestroy(Sender: TObject); begin dmEasyQuery.conEmployee.Disconnect; end;
TLabel
Caption:
- CUSTOMER
TDBGrid
DataSource:
- dmEasyQuery.dsCustomer
Options.dgTabs:
- False
Im Spalteneditor wird eine TColumn erzeugt und der Property FieldName der Feldname „CUSTOMER“ zugeordnet. Anschließend wird die Spalte im DBGrid1 entsprechend vergößert.
TDBEdit (5x)
TLabel (5x)
Diese Objekte werden durch Zuhilfenahme des Spalteneditors von qryCustomer erzeugt: Die Spalten ADDRESS_LINE1, ADDRESS_LINE2, CITY, STATE_PROVINCE und POSTAL_CODE werden hier markiert und per Drag’n’Drop auf die TForm gezogen, entsprechend angeordnet und ein wenig verkleinert (siehe Screnshot).
TLabel
Caption:
- COUNTRY
TDBLookUpComboBox
DataField:
- COUNTRY
DataSource:
- dmEasyQuery.dsCustomer
KeyField:
- COUNTRY
ListField:
- COUNTRY
ListSource:
- dmEasyQuery.dsCountry
TDBNavigator
DataSource:
- dmEasyQuery.dsCustomer
Nun wird die soeben erstellte Form unter dem Namen frm_EasyQuery.pas abgespeichert.
Folgende Projektoptionen müssen geändert werden:
dmEasyQuery muss in der Erzeugungs-Reihenfolge an den Anfang der Liste „Automatisch erzeugen“ gestellt werden. Somit wird gewährleistet, dass die Objekte der frmEasyQuery auch auf die Datenbankobjekte zugreifen können. frmEasyQuery bleibt Hauptformular.
Die Sourcecodes von „EasyQuery“ und weiterer Demos können hier heruntergeladen werden.
Ein Gedanke zu „ZEOS Library – Einsatz mit Delphi und Firebird“
Kommentare sind geschlossen.
Lieben Dank für dieses tolle Tutorial. Es ist sehr klar und übersichtlich, und eine tolle Hilfe für den Einstieg.