BDE-basierte, zwischengespeicherte Aktualisierungen anwenden

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Aktualisierungen mit der BDE zwischenspeichern - Index


Hinweis: Die Borland Database Engine (BDE) ist veraltet und wird nicht mehr weiterentwickelt. Die BDE wird Unicode beispielsweise nie unterstützen. Sie sollten mit der BDE keine neuen Entwicklungen vornehmen. Überprüfen Sie, ob Sie Ihre vorhandenen Datenbankanwendungen nicht von der BDE nach dbExpress migrieren können.

Das Anwenden von Aktualisierungen ist ein Prozess, der aus zwei Phasen besteht und im Zusammenhang mit der Transaktion einer Datenbankkomponente stattfinden sollte, damit die Anwendung von Fehlern frei bleibt. Weitere Informationen über die Behandlung von Transaktionen mit Datenbankkomponenten finden Sie unter Transaktionen verwalten.

Wenn Aktualisierungen mithilfe der Datenbank-Transaktionssteuerung angewendet werden, finden folgende Ereignisse statt:

  1. Eine Datenbanktransaktion wird begonnen.
  2. Die zwischengespeicherten Aktualisierungen werden in die Datenbank geschrieben (Phase 1). Wenn Sie dies definiert haben, wird das Ereignis OnUpdateRecord einmal für jeden Datensatz ausgelöst, der in die Datenbank geschrieben wird. Wenn ein Fehler bei der Anwendung eines Datensatzes auf die Datenbank auftritt, wird das Ereignis OnUpdateError ausgelöst, sofern Sie dies vorgesehen haben.
  3. Die Transaktion wird ausgeführt, wenn die Schreibvorgänge erfolgreich waren oder zurückgesetzt, wenn dies nicht der Fall ist.
Schreibstatus Transaktion

Erfolgreich

Werden die Datenbankänderungen ausgeführt und die Datenbanktransaktion wird beendet.

Nicht erfolgreich

Werden die Datenbankänderungen zurückgesetzt und die Datenbanktransaktion wird beendet.


Weitere Informationen zum Erstellen und Verwenden der Ereignisbehandlung OnUpdateRecord finden Sie unter Fehlerbehandlung bei der zwischengespeicherten Aktualisierung.

Hinweis: Das Anwenden zwischengespeicherter Aktualisierungen ist besonders heikel, wenn Sie mit mehreren Datenmengen arbeiten, die zueinander in einer Haupt/Detail-Beziehung stehen, weil die Reihenfolge, in der Sie die Aktualisierungen für jede einzelne Datenmenge ausführen, von Bedeutung ist. Üblicherweise müssen Sie übergeordnete Tabellen vor untergeordneten Tabellen aktualisieren, es sei denn, die Behandlung hat Datensätze gelöscht und diese Reihenfolge muss umgekehrt werden. Aufgrund dieser Schwierigkeit ist es unbedingt ratsam, Client-Datenmengen zu verwenden, wenn Sie Aktualisierungen in einem Haupt/Detail-Formular" zwischenspeichern möchten. Client-Datenmengen behandeln alle Bestellungen im Hinblick auf diese Haupt/Detail-Beziehungen.

Es gibt zwei Möglichkeiten, BDE-basierte Aktualisierungen anzuwenden:

  • Sie können Aktualisierungen mittels einer Datenbankkomponente anwenden, indem Sie deren Methode ApplyUpdates aufrufen. Diese Methode ist der einfachste Ansatz, weil die Datenbank alle Einzelheiten der Verwaltung einer Transaktion für den Aktualisierungsprozess behandelt und den Zwischenspeicher der Datenmenge löscht, wenn die Aktualisierung abgeschlossen ist.
  • Sie können Aktualisierungen anwenden, indem Sie die Methoden ApplyUpdates und CommitUpdates der Datenmenge aufrufen. Wenn Sie Aktualisierungen auf der Ebene der Datenmenge anwenden, müssen Sie die Transaktion, die den Aktualisierungsvorgang auslöst, explizit codieren und auch CommitUpdates explizit aufrufen, damit die Aktualisierung aus dem Zwischenspeicher ausgeführt wird.

Warnung: Um Aktualisierungen aus einer gespeicherten Prozedur oder einer SQL-Abfrage anzuwenden, die keine "Live"-Ergebnismenge zurückgibt, müssen Sie mittels TUpdateSQL angeben, wie die Aktualisierungen ausgeführt werden sollen. Bei der Aktualisierung verknüpfter Datenmengen (Abfragen an zwei oder mehr Tabellen) müssen Sie ein TUpdateSQL-Objekt pro involvierter Tabelle bereitstellen und die Ereignisbehandlung OnUpdateRecord zum Aufruf dieser Objekte und zur Ausführung der Aktualisierungen verwenden. Weitere Einzelheiten finden Sie unter Eine Datenmenge mit Aktualisierungsobjekten aktualisieren.

Siehe auch