Home » Tutorials » Datenbanken » ZEOS Library – Einsatz mit Delphi und Firebird

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“

  1. Lieben Dank für dieses tolle Tutorial. Es ist sehr klar und übersichtlich, und eine tolle Hilfe für den Einstieg.

     

Kommentare sind geschlossen.