Server-Beschränkungen verarbeiten

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Der Quelldatenmenge Parameter übergeben


Wenn ein Datenbankserver Beschränkungen hinsichtlich der Gültigkeit von Daten definiert, ist es zweckmäßig, wenn die Client-Datenmenge diese Beschränkungen kennt. Auf diese Weise kann die Client-Datenmenge sicherstellen, dass die Bearbeitungen des Benutzers nie diese Server-Beschränkungen verletzen. Demzufolge werden solche unzulässigen Bearbeitungen niemals an den Datenbankserver weitergegeben, weil sie dort zurückgewiesen würden. Das führt dazu, dass weniger Aktualisierungen während ihrer Ausführung Fehlerbedingungen erzeugen.

Unabhängig von der Datenquelle können Sie solche Server-Beschränkungen duplizieren, indem Sie sie der Client-Datenmenge explizit hinzufügen. Dieses Vorgehen ist unter Datenwerte beschränken beschrieben.

Es ist jedoch zweckmäßiger, wenn die Server-Beschränkungen automatisch in Datenpaketen enthalten sind. Dann brauchen Sie nicht explizit Standardausdrücke und Beschränkungen anzugeben, und die Client-Datenmenge ändert die von ihr überwachten Werte entsprechend, wenn sich die Server-Beschränkungen ändern. Standardmäßig passiert genau Folgendes: Wenn die Quelldatenmenge Server-Beschränkungen erkennt, nimmt der Provider sie automatisch in Datenpakete auf, und die Client-Datenmenge erzwingt ihre Einhaltung, wenn der Benutzer Bearbeitungen in das Änderungsprotokoll schreibt.

Anmerkung:  Nur Datenmengen, die die BDE verwenden, können Beschränkungen vom Server importieren. Server-Beschränkungen werden also nur dann in Datenpakete aufgenommen, wenn TBDEClientDataSet oder TClientDataSet mit einem Provider verwendet wird, der eine BDE-basierte Datenmenge repräsentiert. Weitere Informationen zum Importieren von Server-Beschränkungen und zu den Maßnahmen, mit denen man einen Provider daran hindert, sie in Datenpakete aufzunehmen, finden Sie unter Server-Beschränkungen.

Anmerkung:  Weitere Informationen zum Arbeiten mit importierten Beschränkungen finden Sie unter Server-Beschränkungen benutzen.

Während das Importieren von Server-Beschränkungen und Ausdrücken ein äußerst praktisches Funktionsmerkmal ist, das einer Anwendung hilft, die Datenintegrität zu wahren, kann es Situationen geben, in denen es sinnvoll ist, die Beschränkungen vorübergehend außer Kraft zu setzen. Basiert eine Server-Beschränkung beispielsweise auf dem aktuellen Maximalwert eines Feldes, aber die Client-Datenmenge verwendet ein inkrementelles Abrufen, so unterscheidet sich der aktuelle Maximalwert für ein Feld in der Client-Datenmenge von dem Maximalwert auf dem Datenbankserver, und die Beschränkungen werden möglicherweise unterschiedlich interpretiert. Eine andere Situation wäre beispielsweise, wenn eine Client-Datenmenge einen Filter auf Datensätze anwendet, während Beschränkungen aktiviert sind. Dabei könnte der Filter unbeabsichtigt die Beschränkungsbedingungen stören. In solchen Fällen sollte eine Anwendung die Überprüfung von Beschränkungen deaktivieren.

Um Beschränkungen vorübergehend zu deaktivieren, rufen Sie die Methode DisableConstraints auf. Bei jedem Aufruf von DisableConstraints wird ein Referenzzähler inkrementiert. Solange der Referenzzähler größer Null ist, werden in der Client-Datenmenge keine Beschränkungen erzwungen.

Um die Beschränkungen für die Datenmenge wieder zu aktivieren, rufen Sie die Methode EnableConstraints der Datenmenge auf. Bei jedem Aufruf von EnableConstraints wird der Referenzzähler dekrementiert. Ist der Referenzzähler gleich Null, werden die Beschränkungen wieder aktiviert.

Tip:  Rufen Sie DisableConstraints und EnableConstraints immer paarweise auf, um sicherzustellen, dass Beschränkungen aktiviert sind, wenn Sie das erwarten.

Siehe auch