Share via


_DBLock( ) (Rutina de biblioteca API)

Intenta bloquear el registro actual o la tabla abierta en el área de trabajo especificada por workarea.

int _DBLock(int workarea, int RecOrFile)
int workarea;               /* Work area. */
int RecOrFile;               /* What is to be locked. */

Observaciones

El parámetro RecOrFile puede ser DBL_RECORD, para especificar el registro actual, o DBL_FILE, para especificar el archivo de tabla. _DBLock( ) devuelve verdadero (un entero distinto de 0) si el bloqueo tiene éxito o falso (0) si no lo tiene.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo proporciona dos funciones API que puede llamar desde Visual FoxPro: XRLOCK( ), que bloquea el registro actual del área de trabajo actual, y XFLOCK( ), que bloquea la tabla abierta en el área de trabajo actual. XRLOCK( ) llama a _DBLock( – 1, DBL_RECORD( )) y XFLOCK( ) llama a _DBLock( – 1, DBL_FILE( )).

Código Visual FoxPro

SET LIBRARY TO DBLOCK  
DO CreateTest
USE Test SHARED
GO 2
= XRLOCK()
LIST STAT  && shows that record #2 is locked
= XFLOCK()
LIST STAT  && shows that whole DBF is locked

PROCEDURE CreateTest

CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "Golly month of"
APPEND BLANK
REPLACE ABC WITH "A twelfth of"
APPEND BLANK
REPLACE ABC WITH "Hello, world"
APPEND BLANK
REPLACE ABC WITH "When in the"
GO TOP

RETURN

Código C

#include <pro_ext.h>

FAR xLockRecord(ParamBlk FAR *parm)
{
   _DBLock(-1, DBL_RECORD);
}

FAR xLockFile(ParamBlk FAR *parm)
{
   _DBLock(-1, DBL_FILE);
}

FoxInfo myFoxInfo[] =
{
   {"XRLOCK", (FPFI) xLockRecord, 0, ""},
   {"XFLOCK", (FPFI) xLockFile, 0, ""},
};

FoxTable _FoxTable =
{
   (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBAppend( ) (Rutina de biblioteca API) | _DBUnlock( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | Transferir parámetros a funciones de la API de Visual FoxPro