Programmieren mit dBASE PLUS: Funktionen: delete


delete( ) [Rowset] Bearbeiten

Löscht den aktuellen Datensatz.

Syntax Bearbeiten

<oReferenz>.delete( )

<oReferenz>

Der Datensatzbereich, dessen aktuelle Zeile gelöscht werden soll.

Eigenschaft von Bearbeiten

Rowset

Beschreibung Bearbeiten

Mit delete( ) können Sie die aktuelle Zeile des Datensatzbereichs löschen. Sobald delete( ) aufgerufen wurde, wird das Event canDelete ausgelöst. Falls kein Handler für das Event canDelete vorhanden ist oder der Event-Handler den Wert True zurückgibt, wird die aktuelle Zeile gelöscht, das Event onDelete ausgelöst und der Datensatzcursor in die nächste Zeile verschoben. Falls die letzte Zeile gelöscht wurde, wird der Cursor an das Bereichsende verschoben. Diese Cursorbewegung wird nicht als gezielter Steuervorgang interpretiert. Dadurch wird also nicht das Event onNavigate des Rowset-Objekts ausgelöst. Wenn Sie mit einem onNavigate-Event-Handler arbeiten, rufen Sie ihn vom Event onDelete aus auf.

Das Tabellenformat DBF (dBASE) unterstützt zwar Löschmarkierungen, mit denen die Zeilen nur zum Löschen freigegeben, aber nicht tatsächlich entfernt werden. Es gibt aber in den Datenzugriffsklassen keine Methode, mit der diese Datensätze wiederhergestellt werden können. Deshalb sollte eine Löschung mit delete( ) immer als endgültig betrachtet werden.

delete( ) [Array] Bearbeiten

Löscht ein Element eines eindimensionalen Arrays oder eine Zeile bzw. Spalte eines zweidimensionalen Arrays. Bei Erfolg wird 1 zurückgegeben, andernfalls ein Fehler generiert. Die verbleibenden Elemente werden nach vorn verschoben und ersetzen die gelöschten. Die Dimensionen des Arrays werden dabei nicht geändert.

Syntax Bearbeiten

<oReferenz>.delete(<Position AusdruckN> [, <Zeile/Spalte AusdruckN>])

<oReferenz>

Ein Bezug auf das ein- oder zweidimensionale Array, aus dem die Elemente entfernt werden sollen.

<Position AusdruckN>

Bei einem eindimensionalen Array gibt <Position AusdruckN> die Nummer des zu löschenden Elements an.

Ist das Array zweidimensional, gibt <Position AusdruckN> die Nummer der Zeile oder Spalte an, deren Elemente gelöscht werden sollen. Das zweite Argument (siehe nächster Absatz) legt fest, ob <Position AusdruckN> eine Zeile oder Spalte ist.

<Zeile/Spalte AusdruckN>

Dieser Parameter kann den Wert 1 oder 2 annehmen. Wenn Sie ihn nicht definieren oder 1 angeben, wird eine Zeile aus einem zweidimensionalen Array gelöscht. Bei Angabe des Wertes 2 wird eine Spalte gelöscht. Wenn Sie <Position AusdruckN> für ein eindimensionales Array verwenden, wird ein Fehler generiert.

Eigenschaft von Bearbeiten

Array

Beschreibung Bearbeiten

Mit delete( ) können Elemente aus einem Array entfernt werden, ohne daß die Array-Größe geändert wird. Dabei werden folgende Aktionen durchgeführt:

  • Zuerst wird ein Element aus einem eindimensionalen Array oder eine Zeile bzw. Spalte aus einem zweidimensionalen Array-Objekt entfernt.
  • Danach werden die verbleibenden Elemente in Richtung Array-Anfang verschoben (beim Löschen einer Zeile nach oben, beim Löschen eines Elements oder einer Spalte nach links).
  • Zum Schluß wird an der letzten Array-Position der Wert false eingefügt.

Sie können das Array nach dem Löschen mit resize( ) auch verkleinern.

Eindimensionale Arrays

Verwenden Sie delete( ) für ein eindimensionales Array, wird das Element an der angegebenen Position gelöscht, und die restlichen Elemente werden um eine Position in Richtung Array-Anfang verschoben. Danach wird der logische Wert false im letzten Array-Element gespeichert.

Angenommen, Sie definieren mit folgender Anweisung ein eindimensionales Array:

aAlpha = {"A", "B", "C"}

Das Array enthält eine Zeile und kann wie folgt dargestellt werden:

A B C

Durch den Aufruf aAlpha.delete(2) wird Element Nummer 2 mit dem Wert ”B”, gelöscht. Danach wird der Wert in aAlpha[3] nach Alpha[2] verschoben und in Alpha[3] der Wert false gespeichert. Das Array enthält nun die folgenden Werte:

A C false

Zweidimensionale Arrays

Bei einem zweidimensionalen Array werden die Elemente in der angegebenen Zeile oder Spalte gelöscht und die Elemente der restlichen Zeilen oder Spalten um eine Position in Richtung Array-Anfang verschoben. Der logische Wert false wird anschließend in den Elementen der letzten Zeile oder Spalte gespeichert.

Angenommen, Sie definieren ein zweidimensionales Array und füllen es mit Buchstaben. Die folgende Abbildung zeigt, wie das Array durch den Aufruf von aAlpha.delete(2,2) geändert wird.