Daten in einem Steuerelement bearbeiten
Nach oben zu Daten bearbeiten und aktualisieren
Ein datensensitives Steuerelement kann nur dann Änderungen in die ihm zugeordnete Datenmenge übertragen, wenn deren Eigenschaft CanModify den Wert True hat. Bei unidirektionalen Datenmengen ist CanModify immer False. Einige Datenmengen verfügen über die Eigenschaft ReadOnly, mit der Sie festlegen können, ob CanModify den Wert True hat.
Hinweis: Ob eine Datenmenge Daten aktualisieren kann, hängt davon ab, ob die zugrunde liegende Datenbanktabelle Aktualisierungen gestattet.
Auch wenn die Eigenschaft CanModify der Datenmenge die Einstellung True hat, muss die Eigenschaft Enabled der Datenquelle, die die Datenmenge mit dem Steuerelement verbindet, gleichfalls den Wert True haben, damit das Steuerelement Aktualisierungen an die Datenbanktabelle übermitteln kann. Die Eigenschaft Enabled der Datenquelle bestimmt, ob in den mit einer Datenquelle verknüpften Steuerelementen Feldwerte aus der Datenmenge angezeigt werden können und ob der Benutzer Werte bearbeiten und eintragen kann. Wenn Enabled True ist (Voreinstellung), können in den Steuerelementen Feldwerte angezeigt werden.
Schließlich können Sie auch festlegen, ob der Benutzer an den im Steuerelement angezeigten Daten Änderungen vornehmen kann. Die Eigenschaft ReadOnly eines datensensitiven Steuerelements legt fest, ob ein Benutzer die angezeigten Daten bearbeiten kann. Wenn die Eigenschaft den Wert False hat (Voreinstellung), kann der Benutzer Daten bearbeiten. Sie müssen also sicherstellen, dass die Eigenschaft ReadOnly des Steuerelements den Wert True hat, wenn die Eigenschaft CanModify der Datenmenge den Wert False hat. Andernfalls wird Benutzern der falsche Eindruck vermittelt, dass sie die Daten in der zugrunde liegenden Datenbank verändern können.
In allen datensensitiven Steuerelementen mit Ausnahme von TDBGridwird jede von Ihnen durchgeführte Änderung in einem Feld in die zugrunde liegende Feldkomponente der Datenmenge kopiert, sobald das Steuerelement mit Tab verlassen wird. Wenn Sie Esc drücken, bevor Sie das Feld mit Tab verlassen, verwirft das Steuerelement die Änderungen, und der Feldwert wird wieder auf seinen ursprünglichen, vor der Änderung gültigen Wert zurückgesetzt.
In Vcl.DBGrids.TDBGrid-Komponenten werden Änderungen nur dann kopiert, wenn Sie zu einem anderen Datensatz wechseln. Sie können vorher Esc drücken, um alle Änderungen des Datensatzes aufzuheben.
Bei der Übergabe eines Datensatzes prüft Delphi alle datensensitiven Steuerelemente, die mit der Datenmenge verknüpft sind, auf Statusänderungen. Tritt ein Problem bei der Aktualisierung eines Feldes auf, löst Delphi eine Exception aus und ändert den Datensatz nicht.
Hinweis: Wenn Ihre Anwendung Aktualisierungen zwischenspeichert (beispielsweise mit einer Client-Datenmenge), werden alle Änderungen zunächst in einen internen Puffer geschrieben. Die Übernahme in die zugrunde liegende Datenbank erfolgt erst, nachdem Sie die Methode ApplyUpdates der Datenmenge aufgerufen haben.