Histórico da Página
...
Por lo tanto, en muchos casos, especialmente en operaciones simples donde bloqueas un registro, realizas algunas operaciones y luego finalizas el proceso, no es necesario utilizar MsUnlock explícitamente en cada cambio de registro. Esto se debe a que el sistema gestiona el bloqueo automáticamente según el ciclo de vida del proceso que lo inició.
Sin embargo, es fundamental comprender que el uso adecuado de MsUnlock es necesario para garantizar una correcta gestión de la concurrencia en entornos donde múltiples procesos pueden interactuar con los mismos datos. El comando debe ser utilizado de manera consciente para evitar bloqueos prolongados y posibles problemas de rendimiento o integridad de los datos.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
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 |
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas