ZEOS Library – Einsatz mit Delphi und Firebird
TZUpdateSQL
Ein Objekt der Klasse TZUpdateSQL stellt die Statements zur Modifikation von Daten einer Ergebnismenge, die über ein TZQuery-Objekt ermittelt wurden (siehe oben), zur Verfügung. Die TZUpdateSQL-Komponente ähnelt der TUpdateSQL-Komponente der BDE. Hier als Beispiel die Definition der Befehle eines SQL und dem zugehörigen UpdateSQL (zugrunde liegt eine Dialekt-3-Datenbank):
- SQL.Sql:
SELECT * FROM namen
- UpdateSQL.InsertSql:
INSERT INTO namen (recno, name) VALUES (:recno, :name)
- UpdateSQL.ModifySql:
UPDATE namen SET recno = :RecNo, name = :name WHERE recno = :old_recno
- UpdateSQL.DeleteSql:
DELETE FROM namen WHERE recno = :old_recno
Der „OLD_“ Parameter-Präfix für SQL-Statements
Der Präfix „old_“ wird genau so verwendet wie bei den BDE-Komponenten. Hierzu heißt es in der in der Delphi Hilfe (Zitat):
„Durch Angabe von ‚OLD_‘ vor dem Feldnamen kann der Wert abgerufen werden, den das Feld vor wirksamwerden der zwischengespeicherten Aktualisierungen hatte. Diese Möglichkeit ist besonders beim Vergleichen von Feldern in der WHERE-Klausel hilfreich.“
Queries mit Read-Only-Ergebnismenge
Ein UpdateSQL-Objekt wird generell einem TZQuery zugeordnet, das eine Read-Only-Ergebnismenge hat, um zu ermöglichen, dass seine Daten geändert werden können. Solche Read-Only-Queries sind z. B. solche, die mehrere Tabellendaten über ein Join zusammenführen. Aber auch bei „gewöhnlichen“ RequestLive-Ergebnismengen kann ein UpdateSQL-Objekt verwendet werden.
Mehrere Statements in den Sql-Properties von TZQuery und TZUpdateSQL
Die Komponenten TZQuery und TZUpdateSql unterstützen intern die Abarbeitung mehrerer SQL-Statements. So ist es zum Beispiel möglich im SQL-Property mehrere Befehle (auch mit Parametern) für die Abarbeitung zu hinterlegen. Diese müssen aber durch Semikolon getrennt sein. Hier ein Beispiel:
with Query do begin Sql.Clear; Sql.Add('DELETE FROM table1;'); Sql.Add('INSERT INTO table1 VALUES (:Val1, :Val2);'); Sql.Add('INSERT INTO table2 VALUES (:Val3, :Val2);'); Sql.Add('UPDATE table3 SET field1 = :Val4;'); Params.ParamByName('Val1').AsInteger := 123; ExecSql; end;
Alle Statements werden der Reihe nach abgearbeitet. Es ist ebenso möglich, mehrere Statements auf diese Weise in TZUpdateSql-Objekten zusammenzufassen, um so z. B. mehrere Tabellen zu aktualisieren.
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.