Bloqueo, grabación y concurrencia de registros
Comprueba lock antes de asignar campos y distingue desbloqueo de transacción.
Descripción general
RecLock(cAlias,.F.) intenta bloquear registro actual para modificar; .T. inicia inclusión. Asignar campos solo tras verdadero. Alias no puede ser query ni solo lectura. MsUnlock finaliza operación sobre alias actual; en transacción explícita lock físico puede durar hasta final, aunque MsUnlock sigue necesario. Desbloquear no confirma operación completa de negocio. Fragmento requiere tabla propia ZZ1, campo Z1_DESC y registro de prueba localizado. No mantiene tabla estándar. (TOTVS, s.f., refs. 1–2)
Retorno
No hay retorno único: se trata de un flujo compuesto.
Ejemplo comentado
// Fragmento: ZZ1 abierta y grabable, con Z1_DESC y registro de prueba actual.
If !ZZ1->(Eof())
If RecLock("ZZ1", .F.)
// Regla y valor ficticios, solo para tabla propia.
ZZ1->Z1_DESC := "PRUEBA EDITORIAL"
ZZ1->(MsUnlock())
Else
ConOut("Registro no disponible; sin asignacion.")
EndIf
EndIfCon lock obtenido propone actualizar Z1_DESC en tabla ficticia; al fallar no asigna. Fragmento no implementa recuperación completa de errores. En revisión: ejemplo editorial no compilado ni ejecutado en Protheus. Comprobar includes, release, RDD y contexto antes de probar.
- Releer y validar criterios bajo lock, mantener sección corta y tratar errores para cerrar operación. Evitar diálogos y reintentos infinitos; probar dos sesiones y transacción externa.
- En revisión: ejemplo editorial no compilado ni ejecutado en Protheus. Comprobar includes, release, RDD y contexto antes de probar.

Comentarios
Todavía no hay comentarios aprobados.
Inicia sesión con Google o Microsoft para comentar.