Histórico da Página
Libera el registro creado o bloqueado por la RecLock.
Ejemplo:
Verifica si el registro existe en la tabla SA1:
// MsUnlockSample.prw
If !DbSeek(XFilial("SA1") + "000001")
// Si no existe, incluye un registro en blanco y lo bloquea
Reclock("SA1", .T.)
Else
// Bloquea el registro encontrado
Reclock("SA1", .F.)
EndIf
SA1->A1_SALDO := nNovoSaldo
MSUnlock("SA1")
La recomendación es que se utilicen únicamente las funciones RecLock y MsUnlock
CONTENIDO
- Visión General
- Ejemplo de uso
01. VISÃO GERAL
RecLock y MsUnlock son comandos cruciales en el lenguaje AdvPL para controlar la concurrencia en entornos donde múltiples usuarios acceden y modifican datos simultáneamente. RecLock se utiliza para bloquear registros específicos en archivos de datos, asegurando que solo un proceso a la vez pueda realizar cambios y previniendo así inconsistencias y corrupción de la información. Por otro lado, MsUnlock se utiliza para liberar estos bloqueos, permitiendo que otros procesos o usuarios puedan acceder y modificar los registros una vez que las operaciones hayan sido completadas.
02. EJEMPLO DE USO
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
USER FUNCTION EjemploRecLockMsUnlock()
LOCAL nRegistro := 1 // Número de registro a bloquear
// Bloqueando el registro utilizando RecLock
RecLock("ARCHIVO", nRegistro)
// Realizando operaciones de lectura y/o escritura en el registro bloqueado
// En este ejemplo, simulamos una operación ficticia de lectura
dbSeek("ARCHIVO", nRegistro)
dbSkip(1, "ARCHIVO")
// Liberando el bloqueo utilizando MsUnlock después de las operaciones
MsUnlock("ARCHIVO", nRegistro)
// Ejemplo de mensaje de éxito
MsgInfo("Operaciones completadas exitosamente!")
RETURN |
En este ejemplo:
...
RecLock("ARCHIVO", nRegistro): Este comando bloquea el registro número 1 en el archivo "ARCHIVO". A partir de este punto, cualquier intento de otro proceso para modificar este registro será bloqueado hasta que el bloqueo sea liberado.
...
Operaciones de lectura y/o escritura: Aquí se simulan operaciones de lectura en el registro bloqueado, utilizando funciones como dbSeek
y dbSkip
. En la práctica, podrías realizar cualquier operación permitida dentro del contexto de lectura o escritura de datos.
...
.