Inclusión, edición, eliminación lógica y grabación de registros
RecLock(cAlias,lAdd) → campos → MsUnlock(); DBDelete()Distingue bloqueo, cambios de campos y eliminación lógica.
Descripción general
RecLock(alias,.T.) inicia inclusión y .F. intenta bloquear registro posicionado para editar; verificar retorno antes de escribir. MsUnlock finaliza bloqueo pero no equivale a transacción de negocio multitabla. DBDelete marca eliminación lógica, no remueve físicamente. Ejemplo usa tabla temporal propia sin registros de producción. Código comunitario citado contiene mensajes dentro de transacción y RecLock sin verificar; esas partes no se reproducen. (Fuentes: refs. 1–3.)
Sintaxis
RecLock(cAlias,lAdd) → campos → MsUnlock(); DBDelete()Ejemplo comentado
#Include "Protheus.ch"
User Function Ed485()
Local oTmp := FWTemporaryTable():New(GetNextAlias(),{{"ED_TEXT","C",20,0}})
Local cAlias
// Solo tabla temporal de prueba.
oTmp:Create()
cAlias := oTmp:GetAlias()
If RecLock(cAlias,.T.)
(cAlias)->ED_TEXT := "ED01"
(cAlias)->(MsUnlock())
EndIf
(cAlias)->(DbGoTop())
If !(cAlias)->(Eof())
If RecLock(cAlias,.F.)
(cAlias)->ED_TEXT := "ED02"
(cAlias)->(DbDelete())
(cAlias)->(MsUnlock())
EndIf
EndIf
oTmp:Delete()
FreeObj(oTmp)
Return NilDemuestra inclusión, edición y marca de eliminación en temporal, luego elimina tabla propia. En revisión: ejemplo editorial no compilado ni ejecutado en Protheus. Comprobar includes, release, RDD y contexto antes de probar.
- Preferir rutinas de negocio y MVC para registros reales. Prever fallos, limpieza y concurrencia.
- 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.