Eine bearbeitbare Ergebnismenge abrufen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu BDE-Datenmengen verwenden - 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.

Für die Anforderung einer Ergebnismenge, die der Benutzer in datensensitiven Steuerelementen bearbeiten kann, setzen Sie die Eigenschaft RequestLive der Abfrage-Komponente auf True. Dies allein ist zwar noch keine Garantie dafür, dass eine bearbeitbare Ergebnismenge zurückgegeben wird, die BDE versucht jedoch, die Anforderung nach Möglichkeit zu erfüllen. Es gibt einige Einschränkungen in Bezug auf die Anforderung einer bearbeitbaren Ergebnismenge, die davon abhängen, ob eine Abfrage den lokalen SQL-Parser oder den SQL-Parser des Servers verwendet.

Bei Abfragen, bei denen vor den Tabellennamen BDE-Datenbank-Aliasnamen angegeben wurden (dies ist in heterogenen Abfragen der Fall) und Abfragen, die über Paradox- oder dBASE-Tabellen ausgeführt wurden, werden von der BDE mit Local SQL analysiert. In diesem Fall bietet die BDE erweiterte Unterstützung für aktualisierbare Ergebnismengen, und zwar sowohl bei Abfragen über eine als auch über mehrere Tabellen. Bei Verwendung von Local SQL für eine Abfrage über eine einzelne Ansicht oder Tabelle wird nur dann eine bearbeitbare Ergebnismenge zurückgegeben, wenn die Abfrage keines der folgenden Elemente enthält:

  • Eine DISTINCT-Klausel in der SELECT-Anweisung.
  • Verknüpfungen (Inner/Outer Joins oder UNION-Klausel).
  • Zusammenfassungsfunktionen mit oder ohne GROUP BY- oder HAVING-Klausel.
  • Basistabellen oder Ansichten, die nicht aktualisierbar sind.
  • Unterabfragen.
  • ORDER BY-Klauseln, die nicht auf einem Index basieren.

Über einen Remote-Datenbankserver ausgeführte Abfragen werden vom Server analysiert. Wenn die Eigenschaft RequestLive auf True gesetzt wurde, muss sich die SQL-Anweisung an den von Local SQL definierten Standard sowie an alle vom Server auferlegten Einschränkungen halten, weil die BDE sich bei der Übermittlung von Änderungen an den Daten an die Tabelle darauf stützt. Bei einer Abfrage über eine einzelne Tabelle oder Ansicht wird nur dann eine bearbeitbare Ergebnismenge zurückgegeben, wenn diese keines der folgenden Elemente enthält:

  • Eine DISTINCT-Klausel in der SELECT-Anweisung.
  • Zusammenfassungsfunktionen mit oder ohne GROUP BY- oder HAVING-Klausel.
  • Verweise auf mehr als eine Basistabelle oder aktualisierbare Ansichten (Verknüpfungen).
  • Unterabfragen, die in der FROM-Klausel oder in anderen Tabellen auf die Tabelle verweisen.

Wenn eine Anwendung eine aktualisierbare Ergebnismenge anfordert und erhält, so ist die Eigenschaft CanModify der Abfragekomponente auf True gesetzt. Selbst wenn die Abfrage eine bearbeitbare Ergebnismenge zurückliefert, ist es nicht immer möglich, die Ergebnismenge direkt zu bearbeiten, wenn sie verknüpfte Felder enthält, oder wenn vor dem Aktualisierungsversuch der Index gewechselt wurde. In diesem Fall sollten Sie die Ergebnismenge als Nur-Lese-Ergebnismenge betrachten und versuchen, sie entsprechend zu aktualisieren.

Wenn eine Anwendung eine bearbeitbare Ergebnismenge anfordert, was aber aufgrund der Syntax der SELECT-Anweisung nicht möglich ist, gibt die BDE eines der folgenden Elemente zurück:

  • Bei Abfragen über Paradox- oder dBASE-Tabellen: eine Nur-Lese-Ergebnismenge.
  • Bei SQL-Abfragen über einen Remote-Server: einen Fehlercode.

Siehe auch