Aktualisierungen in Datenmengen mit mehreren Tabellen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Auf Aktualisierungsanforderungen des Client reagieren


Wenn ein Datenmengen-Provider SQL-Anweisungen generiert, die Aktualisierungen direkt auf einem Datenbankserver eintragen, benötigt er den Namen der Datenbanktabelle, welche die betroffenen Datensätze enthält. Bei vielen (z.B. tabellenbasierten) Datenmengen wie TTable- oder TQuery-Komponenten ist diese Information automatisch verfügbar. Automatische Aktualisierungen werfen jedoch ein Problem auf, wenn der Provider sie an Daten vornehmen muss, denen eine Stored Procedure mit einer Ergebnismenge oder eine Abfrage über mehrere Tabellen zugrunde liegt. In solchen Fällen gibt es keine direkte Möglichkeit, den Namen der Tabelle zu ermitteln, in welche die Aktualisierungen übernommen werden sollen.

Wenn es sich bei der Abfrage oder Stored Procedure um eine BDE-Datenmenge handelt (TQuery oder TStoredProc), der ein Aktualisierungsobjekt zugeordnet ist, verwendet der Provider das Aktualisierungsobjekt. Gibt es kein Aktualisierungsobjekt, können Sie den Tabellennamen in einer Ereignisbehandlungsroutine für Provider.OnGetTableName bereitstellen. Sobald der Tabellenname zur Verfügung steht, kann der Provider die erforderlichen SQL-Anweisungen generieren.

Die Bereitstellung des Tabellennamens ist nur möglich, wenn das Ziel der Aktualisierung eine einzelne Datenbanktabelle ist (wenn also nur in einer einzigen Tabelle Datensätze aktualisiert werden müssen). Sollte die Aktualisierung Änderungen an mehreren Tabellen erforderlich machen, muss sie in einer Behandlungsroutine für das Ereignis Provider.BeforeUpdateRecord des Providers explizit eingetragen werden. Sobald eine Aktualisierung auf diese Weise eingetragen wurde, setzen Sie den Parameter Applied der Behandlungsroutine auf True, damit der Provider keinen Fehler generiert.

Anmerkung:  Wenn der Provider mit einer BDE-fähigen Datenmenge verknüpft ist, können Sie im Ereignis BeforeUpdateRecord ein Aktualisierungsobjekt verwenden, um Aktualisierungen mit selbst definierten SQL-Anweisungen vorzunehmen.

Siehe auch