Datensätze bearbeiten
Nach oben zu Daten ändern
Eine Datenmenge muss sich im Status dsEdit befinden, damit Datensätze in einer Anwendung geändert werden können. Im Quelltext können Sie die Datenmenge mit der Methode 'Edit in den Modus dsEdit versetzen, wenn für die Nur-Lese-Eigenschaft CanModify für die Datenmenge der Wert True gilt.
Beim Übergang einer Datenmenge in den Modus dsEdit empfängt diese ein Ereignis vom Typ BeforeEdit. Nachdem dieser Übergang erfolgreich abgeschlossen wurde, empfängt die Datenmenge ein Ereignis des Typs AfterEdit. In der Regel werden diese Ereignisse zur Aktualisierung der Benutzeroberfläche verwendet, sodass der Benutzer den aktuellen Status der Datenmenge erkennen kann. Wenn es aus irgendeinem Grund nicht möglich sein sollte, die Datenmenge in den Bearbeitungsstatus zu versetzen, tritt das Ereignis OnEditError ein. Mit diesem können Sie den Benutzer über das Problem informieren oder versuchen, den Fehler zu bereinigen, der verhindert hat, dass die Datenmenge in den Bearbeitungsmodus versetzt wurde.
In Formularen einer Anwendung besitzen bestimmte datensensitive Steuerelemente die Fähigkeit, eine Datenmenge automatisch in den dsEdit-Modus zu versetzen. Dies ist unter folgenden Voraussetzungen möglich:
- Die Eigenschaft ReadOnly des Steuerelements ist auf False gesetzt (Voreinstellung);
- Die Eigenschaft AutoEdit der Datenquelle des Steuerelements muss den Wert True haben.
- CanModify hat für die Datenmenge den Wert True.
Anmerkung: Selbst wenn sich eine Datenmenge im Status dsEdit befindet, kann das Bearbeiten der Datensätze bei SQL-Datenbanken dennoch scheitern, wenn der Benutzer der Anwendung nicht über die geeigneten SQL-Zugriffsberechtigungen verfügt.
Sobald sich eine Datenmenge im Modus dsEdit befindet, kann der Benutzer die Feldwerte des aktuellen Datensatzes ändern, der in einem datensensitiven Steuerelement eines Formulars angezeigt wird. Datensensitive Steuerelemente, für welche die Bearbeitung aktiviert ist, rufen automatisch die Methode Post auf, wenn ein Benutzer eine Aktion ausführt, die den aktuellen Datensatz wechselt. Dies ist z.B. der Fall, wenn eine Bewegung zu einem anderen Datensatz im Gitter erfolgt.
Wenn im Formular eine Navigatorkomponente vorhanden ist, können die Benutzer die Änderungen verwerfen, indem sie auf die Schaltfläche zum Abbrechen des Navigators klicken. Nach dem Abbruch der Bearbeitung befindet sich die Datenmenge wieder im Status dsBrowse.
Im Quelltext werden Bearbeitungen durch einen Aufruf der entsprechenden Methoden gespeichert oder abgebrochen. Zum Speichern der Änderungen rufen Sie Post auf. Durch den Aufruf von Cancel werden die Änderungen verworfen. Häufig werden Edit und Post gemeinsam eingesetzt. Beispiel:
with CustTable do begin Edit; FieldValues['CustNo'] := 1234; Post; end;
Table1->Edit(); Table1->FieldValues["CustNo"] = 1234; Table1->Post();
In diesem Beispiel versetzt die erste Anweisung die Datenmenge in den Modus dsEdit. Die nächste Zeile weist dem Feld CustNo des aktuellen Datensatzes die Zahl 1234 zu. Schließlich wird der geänderte Datensatz in der letzten Zeile in die Datenbank zurückgeschrieben. Wenn die aktualisierten Datensätze nicht in einem Cache zwischengespeichert werden, werden die Änderungen direkt in die Datenbank geschrieben. Bei Verwendung eines Cache werden die Änderungen in einen temporären Puffer geschrieben und erst in die Datenbank übernommen, wenn die Methode ApplyUpdates für die Datenmenge aufgerufen wird.