Compartir a través de


GETNEXTMODIFIED( ) (Función)

Devuelve el número de registro del siguiente registro modificado en un cursor o tabla almacenada en búfer

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

Valores devueltos

Numeric

Parámetros

  • nRecordNumber
    Especifica el número de registro después del cual GETNEXTMODIFIED( ) busca el siguiente registro modificado. Especifique 0 como nRecordNumber para determinar el primer registro de la tabla o el cursor que se ha modificado.

  • cTableAlias
    Especifica el alias de la tabla o el cursor para el que GETNEXTMODIFIED( ) devuelve el número del siguiente registro modificado.

  • nWorkArea
    Especifica el área de trabajo de la tabla o el cursor para el que GETNEXTMODIFIED( ) devuelve el número del siguiente registro modificado.

    Si no especifica un alias o un área de trabajo, GETNEXTMODIFIED( ) devuelve el número de registro del siguiente registro modificado en la tabla o el cursor seleccionado actualmente.

  • lNoFire
    Especifica que se suprime el desencadenamiento de las reglas.

Observaciones

GETNEXTMODIFIED( ) devuelve 0 si no hay registros modificados después del registro especificado. A causa de esto, si sólo modifica un registro, para comprobar su modificación primero deberá utilizar el comando GO TOP para colocar el cursor antes del registro modificado. Un registro se considera modificado si cambia de alguna forma el contenido de alguno de sus campos (aunque se restaure el contenido original del campo) o si cambia el estado de eliminación del registro.

GETNEXTMODIFIED( ) sólo puede funcionar en tablas y cursores para los que esté activado el almacenamiento de tablas en búfer. El almacenamiento de tablas en búfer se activa con CURSORSETPROP( ).

Como los desencadenadores no se ven afectados por GETNEXTMODIFIED( ), lNoFire sólo suprime las reglas de campos y registros, y el error "Se infringe la unicidad del Id. de índice". lNoFire evita que se vacíen los datos temporales, como los almacenados en controles, al cursor subyacente.

Ejemplo

El ejemplo siguiente demuestra cómo puede usar GETNEXTMODIFIED( ) para determinar qué registros de una tabla han cambiado. MULTILOCKS se establece en ON, un requisito para el almacenamiento de tablas en búfer. Se abre la tabla customer de la base de datos testdata y se usa CURSORSETPROP( ) para establecer el modo de almacenamiento optimista de tablas en búfer (5).

Se ejecuta SKIP para mover el puntero de registro al segundo registro y se modifica el campo cust_id con REPLACE. Se usa GETNEXTMODIFIED(0) para mostrar el número de registro del siguiente registro modificado (2, el segundo registro), empezando por el principio de la tabla. Se usa TABLEREVERT( ) para devolver la tabla a su estado original y vuelve a usarse GETNEXTMODIFIED(0) para mostrar el número del siguiente registro modificado (0, que indica que no se ha modificado ningún registro).

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

Vea también

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