Eine Datenmenge mit Aktualisierungsobjekten aktualisieren

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. Weitere Informationen zum Migrieren von der BDE nach dbExpress finden Sie unter http://www.embarcadero.com/rad-in-action/migration-upgrade-center

Wenn die BDE-Datenmenge eine Stored Procedure oder eine Abfrage darstellt, die nicht "live" ist, ist es nicht möglich, Aktualisierungen direkt von der Datenmenge aus vorzunehmen. Solche Datenmengen können auch Probleme verursachen, wenn Sie Aktualisierungen mit Hilfe einer Client-Datenmenge zwischenspeichern. Egal, ob Sie Aktualisierungen mithilfe der BDE oder einer Client-Datenmenge zwischenspeichern, können Sie diese Problem-Datenmengen mithilfe eines Aktualisierungsobjekts in den Griff bekommen.

So aktualisieren Sie eine Datenmenge:

  1. Wenn Sie eine Client-Datenmenge verwenden, benutzen Sie eine externe Provider-Komponente mit TClientDataSet statt TBDEClientDataSet. Auf diese Weise können Sie die Eigenschaft UpdateObject der BDE-fähigen Quelldatenmenge setzen (Schritt 3).
  2. Fügen Sie eine Bde.DBTables.TUpdateSQL-Komponente in das Datenmodul ein, in dem sich auch die BDE-fähige Datenmenge befindet.
  3. Setzen Sie die UpdateObject-Eigenschaft der BDE-Datenmengenkomponente auf die TUpdateSQL-Komponente im Datenmodul.
  4. Geben Sie die SQL-Anweisungen an, die für die Aktualisierungen benötigt werden. Verwenden Sie dazu die Eigenschaften ModifySQL, InsertSQL und DeleteSQL des Aktualisierungsobjekts. Der Update SQL-Editor hilft Ihnen, diese Anweisungen zu formulieren.
  5. Schließen Sie die Datenmenge.
  6. Setzen Sie die Eigenschaft CachedUpdates der Datenmengenkomponente auf True oder linken Sie die Datenmenge mithilfe eines Datenmengen-Providers zu der Client-Datenmenge.
  7. Öffnen Sie die Datenmenge erneut.

Hinweis: Manchmal müssen Sie mehrere Aktualisierungsobjekte verwenden. Wenn Sie beispielsweise eine Aktualisierung für einen Join über mehrere Tabellen oder eine Stored Procedure, die Daten aus mehreren Datenmengen darstellt, vornehmen, müssen Sie für jede zu aktualisierende Tabelle ein TUpdateSQL–Objekt bereitstellen. Wenn Sie mehrere Aktualisierungsobjekte verwenden, können Sie das Aktualisierungsobjekt der Datenmenge nicht einfach zuordnen, indem Sie die Eigenschaft UpdateObject setzen. Stattdessen müssen Sie das Aktualisierungsobjekt manuell in einer Bde.DBTables.TBDEDataSet.OnUpdateRecord-Ereignisbehandlungsroutine (wenn Sie die BDE verwenden, um Aktualisierungen zwischenzuspeichern) aufrufen.

Das Aktualisierungsobjekt kapselt letztlich drei TQuery-Komponenten. Jede dieser Abfragekomponenten führt eine einzelne Aktualisierungsaufgabe aus. Eine Abfragekomponente stellt eine SQL-Anweisung UPDATE bereit, um existierende Datensätze zu ändern; eine zweite Abfragekomponente stellt eine INSERT-Anweisung bereit, um einer Tabelle neue Datensätze hinzuzufügen; und eine dritte Komponente stellt eine DELETE-Anweisung bereit, um Datensätze aus einer Tabelle zu entfernen.

Während Sie eine Aktualisierungskomponente in einem Datenmodul platzieren, sehen Sie die davon gekapselten Abfragekomponenten nicht. Sie werden in Abhängigkeit von drei Aktualisierungseigenschaften, für die Sie SQL-Anweisungen bereitstellen, von der Aktualisierungskomponente zur Laufzeit erstellt:

Wenn die Aktualisierungskomponente verwendet wird, um zur Laufzeit Aktualisierungen anzuwenden, geht sie wie folgt vor:

  1. Sie wählt eine SQL-Anweisung aus, die abhängig davon ausgeführt wird, ob der aktuelle Datensatz verändert, eingefügt oder gelöscht werden soll.
  2. Sie stellt Parameterwerte für die SQL-Anweisung bereit.
  3. Sie bereitet die SQL-Anweisung für die vorgegebene Aktualisierung vor und führt sie aus.

Siehe auch