Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Revertida da versão 8

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

  1. Visión General
  2. 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
languagecpp
themeMidnight
titleejemplo
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.

...

.