Version 3
DELETE SELECTION {(Tabellenname)}
Parameter | Typ | Beschreibung | |
Tabellenname | Tabelle | Zu bearbeitende Tabelle oder | |
Haupttabelle ohne Angabe |
Beschreibung
Der Befehl DELETE SELECTION löscht alle Datensätze in der aktuellen Auswahl der Tabelle Tabellenname. Ist die aktuelle Auswahl leer, hat er keine Auswirkung. Wurden die Datensätze gelöscht, ist die aktuelle Auswahl von Tabellenname leer.
Datensätze, die während einer Transaktion gelöscht werden, sind für andere Benutzer und Prozesse gesperrt, bis die Transaktion bestätigt oder abgebrochen wird.
Datensätze, die nicht gelöscht werden konnten, weil sie von einem anderen Prozess gesperrt waren, legt 4D in die Menge "LockedSet".
Tabellenname ist optional. Wird der Parameter nicht angegeben, bezieht sich DELETE SELECTION auf die Haupttabelle.
Warnung: Das Löschen einer Datensatzauswahl sollte mit Bedacht verwendet werden, denn die Operation ist dauerhaft und lässt sich nicht mehr rückgängig machen.
Die Option Datensätze vollständig löschen im Inspektorfenster erhöht die Löschgeschwindigkeit beim Verwenden von DELETE SELECTION.
Beispiele
1. Folgendes Beispiel zeigt alle Datensätze aus der Tabelle [People] und lässt den Anwender wählen, welche er löschen möchte. Das Beispiel ist in zwei Teile gegliedert. Der erste Teil ist eine Methode, die Datensätze anzeigt, der zweite eine Objektmethode für die Schaltfläche Löschen.
Die Methode:
ALL RECORDS ([People]) ` Wähle alle Datensätze OUTPUT FORM ([People]; "Listing") ` Setze Formular DISPLAY SELECTION ([People]) ` Zeige alle Datensätze an
Die Objektmethode für die Schaltfläche Löschen, die im Fußteil des Ausgabeformulars erscheint. Sie verwendet die vom Benutzer ausgewählten Datensätze (die Menge UserSet) zum Löschen der Auswahl. Hat der Benutzer keine Auswahl getroffen, hat DELETE SELECTION keine Auswirkung.
` Bestätige, daß der Benutzer die Datensätze wirklich löschen will CONFIRM("Sie haben "+String(Records in set ("UserSet")) +" Personen zum Löschen gewählt." +Char(13)+"Klicken Sie zum Löschen auf OK.") If (OK=1) USE SET ("UserSet") ` Verwende die vom Benutzer gewählten Datensätze DELETE SELECTION([People]) ` Lösche Datensätze in Auswahl End if ALL RECORDS ([People]) ` Wähle alle Datensätze
2. Datensätze, die während der Ausführung von DELETE SELECTION gesperrt sind, werden nicht gelöscht. Sie werden in der Menge LockedSet abgelegt. Mit dieser Menge können Sie anschließend prüfen, ob Datensätze gesperrt waren. Die folgende Schleife wird ausgeführt, bis alle Datensätze gelöscht sind:
Repeat ` Wiederhole für alle gesperrten Datensätze DELETE SELECTION([ThisTable]) If (Records in set("LockedSet")#0) ` Gibt es gesperrte Datensätze
USE SET ("LockedSet") ` Wähle nur die gesperrten Datensätze End if
Until (Records in set("LockedSet")=0) ` Bis es keine gesperrten Datensätze mehr gibt
Referenz
Datensatz sperren, DISPLAY SELECTION, Einführung in Mengen, MODIFY SELECTION, TRUNCATE TABLE.