SETFLDSTATE( ) (Función)

Asigna un valor de estado de campo o de eliminación a un campo o a un registro de una tabla o un cursor.

SETFLDSTATE(cFieldName | nFieldNumber, nFieldState [, cTableAlias
   | nWorkArea])

Valores devueltos

Logical

Parámetros

  • cFieldName | nFieldNumber
    Especifica el nombre o el número del campo al que se asigna el estado de edición o eliminación. El número de campo nFieldNumber corresponde a la posición del campo en la tabla o estructura del cursor. DISPLAY STRUCTURE o FIELD( ) pueden emplearse para determinar el número de un campo.

    Para establecer el estado de eliminación para el registro, incluya 0 como número de campo.

  • nFieldState
    Especifica un valor para el estado de campo o de eliminación. La tabla siguiente muestra el valor de estado de campo o de eliminación, y el estado de edición o eliminación correspondiente:

    nFieldState Estado de edición o eliminación
    1 No se ha editado el campo o no ha cambiado el estado de eliminación.
    2 Se ha editado el campo o ha cambiado el estado de eliminación.
    3 No se ha editado el campo de un registro anexado o no ha cambiado el estado de eliminación del registro anexado.
    4 Se ha editado el campo de un registro anexado o ha cambiado el estado de eliminación para el registro anexado.
  • cTableAlias
    Especifica el alias del cursor o la tabla local en los que se ha asignado el estado de edición o eliminación.

  • nWorkArea
    Especifica el área de trabajo del cursor o la tabla local en los que se ha asignado el estado de edición o eliminación. El valor de estado del campo o eliminación se asigna para la tabla o el cursor abiertos en el área de trabajo seleccionada actualmente si SETFLDSTATE( ) se ejecuta sin los argumentos opcionales cTableAlias o nWorkArea.

Observaciones

Visual FoxPro utiliza valores de estado de campo para determinar qué campos se actualizan en tablas o cursores. SETFLDSTATE( ) permite controlar qué campos intenta actualizar Visual FoxPro, independientemente de los campos que se hayan editado en el cursor o la tabla.

Ejemplo

El ejemplo siguiente demuestra cómo puede usar SETFLDSTATE( ) para cambiar el estado del campo. 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 GETFLDSTATE( ) para mostrar un valor (1) correspondiente al estado no modificado del campo cust_id antes de modificarlo. Se modifica el campo cust_id con REPLACE, y se vuelve a ejecutar GETFLDSTATE( ) para mostrar un valor (2) correspondiente al estado modificado del campo cust_id.

SETFLDSTATE( ) se usa para volver a cambiar el estado del campo cust_id a 1 (no modificado). GETFLDSTATE( ) vuelve a ejecutarse y muestra 1, que corresponde al estado del campo cust_id asignado por SETFLDSTATE( ). Se usa TABLEREVERT( ) para devolver la tabla a su estado original.

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
? GETFLDSTATE('cust_id')  && Displays 1, not modified
REPLACE cust_id    WITH '***'  && Changes field contents
? GETFLDSTATE('cust_id')  && Returns 2, field modified
= SETFLDSTATE('cust_id', 1)  && Change the field status
? GETFLDSTATE('cust_id')  && Displays 1, not modified
= TABLEREVERT(.T.)  && Discard all table changes

Vea también

DELETED( ) | DISPLAY STRUCTURE | FIELD( ) | GETFLDSTATE( )