TABLEREVERT( )-Funktion
Macht Änderungen rückgängig, die an einer gepufferten Zeile oder an einer gepufferten Tabelle oder an einem Cursor vorgenommen wurden, und stellt für Remotecursor die OLDVAL( )-Daten, für lokale Tabellen und Cursor die aktuell auf dem jeweiligen Datenträger befindlichen Werte wieder her.
TABLEREVERT([lAllRows [, cTableAlias | nWorkArea]])
Rückgabewerte
Numerisch
Parameter
lAllRows
Legt fest, ob alle an der Tabelle oder dem Cursor vorgenommenen Änderungen rückgängig gemacht werden sollen. Wenn lAllRows gleich Wahr (.T.) und Tabellenpufferung aktiv ist, werden alle an den Datensätzen der Tabelle oder des Cursors vorgenommenen Änderungen rückgängig gemacht. Wenn lAllRows gleich Falsch (.F.) und Tabellenpufferung aktiv ist, werden nur Änderungen rückgängig gemacht, die am aktuellen Datensatz der Tabelle oder des Cursors vorgenommen wurden.Wenn die Zeilenpufferung aktiv ist, wird der Wert von lAllRows ignoriert, und die am aktuellen Datensatz in der Tabelle oder dem Cursor vorgenommenen Änderungen werden rückgängig gemacht.
Der Standardwert für lAllRows ist Falsch (.F.).
cTableAlias
Gibt den Alias der Tabelle oder des Cursors an, in der bzw. in dem die Änderungen rückgängig gemacht werden.nWorkArea
Gibt den Arbeitsbereich der Tabelle oder des Cursors an, in der bzw. in dem die Änderungen rückgängig gemacht werden.
Hinweise
TABLEREVERT( ) gibt die Anzahl von Datensätzen zurück, für die Änderungen rückgängig gemacht wurden.
Anmerkung In einem Netzwerk können sich die aktuell auf dem Datenträger vorhandenen Daten von den Daten unterscheiden, die sich auf dem Datenträger befanden, als die Tabelle geöffnet oder der Cursor erstellt wurde. Andere Benutzer im Netzwerk können die Daten geändert haben, nachdem die Tabelle geöffnet oder der Cursor erstellt wurde.
TABLEREVERT( ) kann Änderungen an einer Tabelle oder einem Cursor nicht rückgängig machen, wenn weder Zeilen- noch Tabellenpufferung aktiviert sind. Wenn Sie TABLEREVERT( ) eingeben und weder Zeilen- noch Tabellenpufferung aktiviert sind, generiert Visual FoxPro eine Fehlermeldung. Verwenden Sie CURSORSETPROP( ) zum Aktivieren und Deaktivieren der Zeilen- und Tabellenpufferung.
Ist TABLEREVERT( ) ohne das optionale Argument cTableAlias bzw. nWorkArea angegeben, werden Änderungen rückgängig gemacht, die an der Tabelle bzw. dem Cursor vorgenommen wurden, die bzw. der im aktuell ausgewählten Arbeitsbereich geöffnet ist.
TABLEREVERT( ) führt den Datensatzzeiger nicht in seine ursprüngliche Position zurück.
Beispiel
Das folgende Beispiel zeigt, wie TABLEREVERT( ) verwendet wird, um Änderungen an einer gepufferten Tabelle rückgängig zu machen. Als Notwendigkeit für die Tabellenpufferung wird MULTILOCKS auf ON gesetzt. Die Tabelle customer
der Datenbank testdata
wird geöffnet, und der Zwischenspeicherungsmodus wird durch CURSORSETPROP( ) auf "5 - Optimistische Tabellenpufferung" gesetzt.
Der Wert des Feldes cust_id
wird zunächst angezeigt und dann mit REPLACE verändert. Danach wird der neue Wert des Feldes cust_id
angezeigt. Mit TABLEREVERT( ) wird dann die Tabelle in ihren ursprünglichen Zustand zurückversetzt (TABLEUPDATE( ) könnte stattdessen die Änderungen übergeben). Danach wird der rückgängig gemachte Wert des Feldes cust_id
angezeigt.
CLOSE DATABASES
SET MULTILOCKS ON && Must be on for table buffering
SET PATH TO (HOME(2) + 'data\') && Sets path to database
OPEN DATABASE testdata && Open testdata database
USE Customer && Open customer table
= CURSORSETPROP('Buffering', 5, 'customer') && Enable table buffering
CLEAR
? 'Original cust_id value: '
?? cust_id && Displays current cust_id value
REPLACE cust_id WITH '***' && Changes field contents
? 'New cust_id value: '
?? cust_id && Displays new cust_id value
= TABLEREVERT(.T.) && Discard all table changes
? 'Reverted cust_id value: '
?? cust_id && Displays reverted cust_id value