Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
languagecpp
themeMidnight
titleejemplo Ejemplo básico
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

...

Bloco de código
languagecpp
themeMidnight
titleejemplo Ejemplo incorrecto
USER FUNCTION EjemploIncorrecto()
    LOCAL nRegistro := 1
    
    // Bloqueando el registro utilizando RecLock
    RecLock("ARCHIVO", nRegistro)
    
    // Realizando la primera operación en el registro bloqueado
    dbEdit("ARCHIVO", nRegistro)
    dbReplace("ARCHIVO", nRegistro, "Primera modificación")
    
    // Liberando el bloqueo utilizando MsUnlock después de la primera operación
    MsUnlock("ARCHIVO", nRegistro)
    
    // Intentando bloquear nuevamente para la segunda operación
    RecLock("ARCHIVO", nRegistro) // Error aquí, el registro ya está bloqueado
    dbEdit("ARCHIVO", nRegistro)
    dbReplace("ARCHIVO", nRegistro, "Segunda modificación")
    
    // Liberando el bloqueo correctamente después de todas las operaciones
    MsUnlock("ARCHIVO", nRegistro)
RETURN

...

Bloco de código
languagecpp
themeMidnight
titleejemplo Ejemplo correcto
USER FUNCTION EjemploCorrecto()
    LOCAL nRegistro := 1
    
    // Bloqueando el registro utilizando RecLock
    RecLock("ARCHIVO", nRegistro)
    
    // Realizando la primera operación en el registro bloqueado
    dbEdit("ARCHIVO", nRegistro)
    dbReplace("ARCHIVO", nRegistro, "Primera modificación")
    
    // Realizando la segunda operación en el mismo registro
    dbEdit("ARCHIVO", nRegistro)
    dbReplace("ARCHIVO", nRegistro, "Segunda modificación")
    
    // Liberando el bloqueo solamente después de todas las operaciones
    MsUnlock("ARCHIVO", nRegistro)
RETURN

...