GETNEXTMODIFIED( )-Funktion

Gibt die Datensatznummer des nächsten geänderten Datensatzes einer gepufferten Tabelle oder eines gepufferten Cursors zurück.

GETNEXTMODIFIED(nRecordNumber [, cTableAlias | nWorkArea] [, lNoFire])

Rückgabewerte

Numerisch

Parameter

  • nRecordNumber
    Gibt die Nummer des Datensatzes an, ab dem GETNEXTMODIFIED( ) den nächsten geänderten Datensatz sucht. Geben Sie 0 für nRecordNumber an, um den ersten Datensatz einer Tabelle oder Cursor-Datei zu suchen, der geändert wurde.

  • cTableAlias
    Gibt den Alias der Tabelle oder des Cursors an, aus der bzw. dem GETNEXTMODIFIED( ) die Nummer des nächsten geänderten Datensatzes zurückgibt.

  • nWorkArea
    Gibt den Arbeitsbereich der Tabelle oder des Cursors an, aus der bzw. dem GETNEXTMODIFIED( ) die Nummer des nächsten Datensatzes zurückgibt.

    Wenn Sie keinen Alias oder Arbeitsbereich angeben, gibt GETNEXTMODIFIED( ) die Nummer des nächsten geänderten Datensatzes der aktuellen Tabelle oder des aktuellen Cursors zurück.

  • lNoFire
    Gibt an, dass das Auslösen von Regeln unterdrückt werden soll.

Hinweise

GETNEXTMODIFIED( ) gibt 0 zurück, wenn nach dem von Ihnen angegebenen Datensatz keine geänderten Datensätze vorhanden sind. Wenn Sie nur einen Datensatz ändern, müssen Sie deshalb zur Überprüfung der Änderung zuerst den Cursor mit Hilfe des GO TOP-Befehls vor den geänderten Datensatz setzen. Ein Datensatz wird als geändert betrachtet, wenn der Inhalt eines der Datensatzfelder in irgendeiner Art geändert wurde (auch wenn der ursprüngliche Feldinhalt wiederhergestellt wurde) oder sich der Löschstatus des Datensatzes geändert hat.

GETNEXTMODIFIED( ) kann nur auf Tabellen und Cursor angewendet werden, für die die Tabellenpufferung aktiviert ist. Die Tabellenpufferung wird mit CURSORSETPROP( ) aktiviert.

Trigger werden von GETNEXTMODIFIED( ) nicht beeinflusst. Deshalb unterdrückt lNoFire nur Feld- und Datensatzregeln sowie den Fehler "Die Eindeutigkeit der Index-ID wird verletzt". lNoFire verhindert das Übertragen temporärer Daten, wie z. B. in Steuerelementen gespeicherte Daten, zum zugrundeliegenden Cursor.

Beispiel

Das folgende Beispiel veranschaulicht, wie Sie mit GETNEXTMODIFIED( ) bestimmen können, welche Datensätze einer Tabelle geändert wurden. 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 Datensatzzeiger wird mit SKIP auf den zweiten Datensatz bewegt, und das Feld cust_id wird mit REPLACE geändert. GETNEXTMODIFIED(0) wird verwendet, um die Datensatznummer des nächsten geänderten Datensatzes (2 für den zweiten Datensatz), ausgehend vom Tabellenanfang, anzuzeigen. Mit TABLEREVERT( ) wird die Tabelle in ihren ursprünglichen Status zurückversetzt. Anschließend wird erneut GETNEXTMODIFIED(0) verwendet, um die Datensatznummer des nächsten geänderten Datensatzes (0, d. h. es wurden keine Datensätze geändert) anzuzeigen.

CLOSE DATABASES
CLEAR

OPEN DATABASE SYS (HOME(2) + 'data\testdata')
SET MULTILOCKS ON  && Allow table buffering
USE Customer     && Open customer table
=CURSORSETPROP("Buffering", 5, "customer")  && Enable table buffering

SKIP  && Move record pointer to the second record

* Change field contents
REPLACE cust_id WITH "***"

* Call MESSAGEBOX function with results of GETNEXTMODIFIED
=MESSAGEBOX("Record " + ALLTRIM(STR(GETNEXTMODIFIED(0))) + ;
   " has changed.",0,"Results")

* Revert table and display results with MESSAGEBOX
=TABLEREVERT(.T.)  && Discard all table changes
nChange=GETNEXTMODIFIED(0)
IF nChange=0
   =MESSAGEBOX("Record(s) have been reverted.",0,"Results")
ELSE
   =MESSAGEBOX("Record " + ALLTRIM(STR(GETNEXTMODIFIED(0))) + ;
    " has changed.",0,"Results")
ENDIF

Siehe auch

CURSORSETPROP( ) | CURVAL( ) | GETFLDSTATE( ) | OLDVAL( )