RLOCK()
 Bloquea el registro actual del área de trabajo activa
------------------------------------------------------------------------------
 Sintaxis

     RLOCK() --> lExito

 Devuelve

     RLOCK() devuelve el valor verdadero (.T.) si se bloquea el registro y
     el valor falso (.F.) en caso contrario.

 Descripción

     RLOCK() es una función de red que bloquea el registro actual,
     impidiendo que otros usuarios puedan actualizar ese registro hasta que
     se libere. RLOCK() permite un bloqueo compartido de manera que los
     demás usuarios sólo tengan acceso de lectura al registro bloqueado.
     Sólo se permite modificarlo al usuario actual. El bloqueo del registro
     se mantiene hasta que se bloquee otro registro, se ejecute un mandato
     UNLOCK, se cierre el fichero de base de datos o se ejecute un FLOCK()
     en el fichero actual.

     Por cada invocación de RLOCK(), se realiza un intento de bloquear el
     registro actual y el resultado se devuelve como valor lógico. Los
     intentos de bloqueo de un registro fallan cuando otro usuario ha
     bloqueado ese mismo registro o está utilizando en modo exclusivo el
     fichero actual. Si se intenta ejecutar RLOCK() en una base de datos
     vacía, se devuelve el valor verdadero (.T.).

     Por defecto, RLOCK() opera en el área de trabajo actual. Si desea
     utilizarla en un área de trabajo no seleccionada, debe especificarla en
     una expresión de alias (consulte el ejemplo siguiente). Esto puede ser
     muy útil porque RLOCK() no intenta automáticamente bloquear los
     registros de ficheros relacionados.

     Normalmente, RLOCK() opera de forma exclusiva sobre el registro actual,
     no pudiendo hacerlo con los siguientes mandatos:

      @...GET

      DELETE (un registro)

      RECALL (un registro)

      REPLACE (un registro)

     Si desea más información, consulte el capítulo "Programación en Red" de
     la Guía de Programación y Utilidades.

 Notas

     ■ SET RELATION: CA-Clipper no bloquea automáticamente todos los
        registros de la cadena de relación cuando el usuario bloquea el
        registro del área de trabajo actual. Asimismo, un mandato UNLOCK no
        afecta a las áreas de trabajo relacionadas.

 Ejemplos

      Este ejemplo borra un registro en un entorno de red utilizando
        RLOCK():

        USE Clientes INDEX NombreCli SHARED NEW
        SEEK "Martinez"
        IF FOUND()
           IF RLOCK()
              DELETE
              ? "Martinez ha sido borrado"
           ELSE
              ? "Otro usuario está utilizando el registro"
           ENDIF
        ELSE
           ? "Martinez no se encuentra en el fichero Clientes"
        ENDIF
        CLOSE

      Este ejemplo especifica RLOCK() en una expresión de alias para
        bloquear un registro en un área de trabajo no seleccionada:

        USE Ventas SHARED NEW
        USE Clientes SHARED NEW
        //
        IF !Ventas->(RLOCK())
           ? "Otro usuario está utilizando el registro Ventas actual"
        ENDIF

 Ficheros   La biblioteca asociada es CLIPPER.LIB.

 To download this example - click here.

See Also: APPEND BLANK SET EXCLUSIVE* UNLOCK USE