Programmieren mit dBASE PLUS: Funktionen: beginEdit

Aus Wikibooks


Mit dieser Methode wird das Einfügen einer neuen Zeile gestartet.

Syntax[Bearbeiten]

<oReferenz>.beginAppend( )

<oReferenz>

Der Datensatzbereich, der in den Anfügemodus versetzt werden soll.

Eigenschaft von[Bearbeiten]

Rowset

Beschreibung[Bearbeiten]

Mit beginAppend( ) können Sie den Datensatzpuffer löschen und den Datensatzbereich in den Anfügemodus versetzen. Anschließend können Sie eine neue Zeile einfügen, indem Sie Daten über die mit dataLink verknüpften Steuerungselemente eingeben oder der Eigenschaft value der Felder auf direktem Weg Werte zuweisen. Auch eine Kombination beider Methoden ist möglich. Der Inhalt des Datensatzpuffers wird erst auf die Festplatte geschrieben, wenn die Methode save( ) des Datensatzbereichs explizit aufgerufen oder eine Speicherung implizit ausgelöst wird. Letzteres ist üblicherweise der Fall, wenn der Cursor im Datensatzbereich bewegt wird. Hier wird dann der Versuch einer Speicherung nur dann ausgeführt, wenn die Eigenschaft modified des Rowset-Objekts auf True gesetzt ist; dies soll verhindern, daß leere Datensätze hinzugefügt werden. Wenn beginAppend( ) erneut aufgerufen wird, um einen weiteren Datensatz hinzuzufügen, wird im Falle einer Änderung des Datensatzes ebenfalls zuerst eine implizit ausgelöste Speicherung vorgenommen.

Vor dem Speichern eines Datensatzes sollte über das canSave-Event des Rowset-Objekts die Integrität der betreffenden Daten geprüft werden, damit beispielsweise sichergestellt ist, dass alle erforderlichen Felder ausgefüllt wurden. Mit der Methode abandon( ) können Sie den neuen Datensatz verwerfen; in diesem Fall bleibt der Versuch, die Daten hinzuzufügen, folgenlos.

Das Event onAppend wird ausgelöst, nachdem der Datensatzpuffer gelöscht wurde. Damit können Sie die Werte aller Felder voreinstellen. Nach dem Voreinstellen der Werte setzen Sie die Eigenschaft modified auf False. So kann aufgrund der Werte der Felder unmittelbar nach dem Event onAppend entschieden werden, ob der Datensatz geändert wurde und gespeichert werden muss.

Beim Aufruf von beginAppend( ) gilt folgende Event-Reihenfolge:

  1. Wenn das Rowset-Objekt einen canAppend-Event-Handler aufweist, wird er aufgerufen. Wenn dies nicht der Fall ist, geschieht dasselbe, als hätte canAppend den Wert True zurückgegeben.
  2. Wenn der canAppend-Event-Handler den Wert False liefert, geschieht nichts. beginAppend( ) liefert dann den Wert False.
  3. Wenn der canAppend-Event-Handler den Wert True liefert, wird die Eigenschaft modified des Rowset-Objekts abgefragt.
  4. Wenn modified den Wert True hat:
    • Das canSave-Event des Rowset-Objekts wird ausgelöst. Wenn es kein canSave-Event gibt, geschieht dasselbe, als hätte canSave den Wert True zurückgegeben.
    • Wenn canSave den Wert False liefert, geschieht nichts. beginAppend( ) gibt dann den Wert False zurück.
    • Wenn canSave den Wert True liefert, versucht dBASE Plus, den Datensatz zu speichern. Wenn der Datensatz nicht gespeichert wird, etwa weil auf der Ebene der Datenbank-Engine die Datenvalidierung fehlschlägt, tritt eine DbException ein. In diesem Fall wird beginAppend( ) nicht beendet.
    • Wenn der Datensatz gespeichert wird, nimmt die Eigenschaft modified den Wert False an, und das Event onSave wird ausgelöst.
  5. Nachdem der aktuelle Datensatz gespeichert wurde (falls erforderlich), geschieht Folgendes:
    • Das Rowset-Objekt wird in den Anfügemodus versetzt.
    • Das Event onAppend wird ausgelöst.
    • beginAppend( ) liefert True.

Beim Aufruf von beginAppend( ) tritt ein Fehler auf, wenn die live-Eigenschaft des Datensatzbereichs den Wert False hat oder der Benutzer nicht die erforderlichen Zugriffsrechte zum Hinzufügen von Datensätzen besitzt.