Freigeben über


OLDVAL( )-Funktion

Gibt die Ausgangsfeldwerte für Felder zurück, die bearbeitet, aber nicht aktualisiert worden sind.

OLDVAL(cExpression [, cTableAlias | nWorkArea])

Rückgabewerte

Zeichen, Währung, Datum, DatumZeit, Double, Gleitkomma, Integer, Logisch, Numerisch oder Memo

Parameter

  • cExpression
    Gibt einen Ausdruck an, dessen Ausgangswert OLDVAL( ) aus einer Tabelle oder Remotedatenquelle zurückgibt. cExpression ist im Normalfall ein Feld oder ein Ausdruck, die aus mehreren Feldern aus der Tabelle oder Remotedatenquelle bestehen.
  • cTableAlias
    Gibt den Alias der Tabelle oder des Cursors an, aus der bzw. dem die Ausgangsfeldwerte zurückgegeben werden.
  • nWorkArea
    Gibt den Arbeitsbereich der Tabelle oder des Cursors an, aus der bzw. dem die Ausgangsfeldwerte zurückgegeben werden.

Hinweise

OLDVAL( ) gibt Ausgangsfeldwerte für Datensätze aus einer Visual FoxPro-Tabelle oder einem Cursor zurück, die bzw. der über eine mit CURSORSETPROP( ) aktivierte Zeilen- oder Tabellenpufferung verfügt.

Falls für eine Tabelle in einer Datenbank oder einen Cursor Gültigkeitsregeln vorhanden sind, muss die Zeilen- oder Tabellenpufferung für die Rückgabe von Ausgangsfeldwerten durch OLDVAL( ) nicht aktiviert sein.

Wenn der Datensatzzeiger bei aktivierter Zeilenpufferung auf einen anderen Datensatz verschoben wird oder TABLEUPDATE( ) zum Vornehmen von Änderungen an dem Datensatz eingegeben wird, oder wenn eine andere Aktion, wie etwa das Beenden einer Transaktion, eine Aktualisierung hervorruft, dann werden die Felder aktualisiert. Die Ausgangsfeldwerte sind dann nicht mehr verfügbar.

Der Datentyp des von OLDVAL( ) zurückgegebenen Wertes wird durch den Ausdruck festgelegt, den Sie mit cExpression angeben.

Die Ausgangsfeldwerte werden für die Tabelle oder den Cursor zurückgegeben, die bzw. der im aktuellen Arbeitsbereich geöffnet ist, wenn OLDVAL( ) ohne die optionalen Argumente cTableAlias oder nWorkArea eingegeben wird.

Beispiel

Im folgenden Beispiel wird erklärt, wie Sie mit OLDVAL( ) den Ausgangswert für ein Feld in einer gepufferten Tabelle zurückgeben können. Eine Tabelle mit dem Namen employees wird erstellt. Zum Einfügen des Wertes "Smith" in das Feld cLastName wird INSERT - SQL verwendet.

Als Notwendigkeit für die Tabellenpufferung wird MULTILOCKS auf ON gesetzt. Mit Hilfe von CURSORSETPROP( ) wird der Puffermodus auf Optimistische Tabellenpufferung (5) gesetzt.

Der Ausgangswert des Feldes cLastName (Smith) wird angezeigt. Dann wird das Feld cLastName mit REPLACE bearbeitet. Der neue Wert des Feldes cLastName (Jones) wird angezeigt. Der ursprüngliche Wert des Feldes cLastName (Smith) wird mit OLDVAL( ) angezeigt. Dann können mit TABLEUPDATE( ) Änderungen an der Tabelle vorgenommen werden. Der aktualisierte Wert des Feldes cLastName (Jones) wird angezeigt.

CLOSE DATABASES
CLEAR

* Create new table and add blank record
CREATE TABLE employee (cLastName C(10)) 
APPEND BLANK

* Insert initial value
INSERT INTO employee (cLastName) VALUES ("Smith")

* Enable and set table buffering
SET MULTILOCKS ON  && Allow table buffering
=CURSORSETPROP("Buffering", 5, "employee" )  && Enable table buffering

* Display initial value
=MESSAGEBOX("Original cLastName value: "+ cLastName, 0, "Results")

* Change record value and display results
REPLACE cLastName WITH "Jones"
=MESSAGEBOX("Modified cLastName value: "+ cLastName, 0, "Results")

* Store the old value of the field to cTemp variable and display results
cTemp=OLDVAL("cLastName", "employee")
=MESSAGEBOX("Original cLastName value: "+ cTemp, 0, "Results")

* Update table and display final value
=TABLEUPDATE(.T.)
=MESSAGEBOX("Final cLastName value: "+ cLastName, 0, "Results")

* Close and delete example table file
USE
DELETE FILE employee.dbf

Siehe auch

CURVAL( ) | GETFLDSTATE( ) | TABLEREVERT( ) | TABLEUPDATE( ) | CURSORSETPROP( )