RecLock e MsUnlock em cadastros introdutórios
Confere o bloqueio antes de alterar um registro.
Visão geral
RecLock com .F. tenta bloquear o registro corrente; com .T. inicia inclusão. Só atribua campos após retorno .T. e finalize a operação com MsUnlock no mesmo alias. Um cursor SQL ou alias somente leitura não pode receber esse fluxo. Em transação explícita, MsUnlock deve ser chamado, mas o lock pode continuar até o fim da transação. O exemplo mostra apenas um ciclo de alteração sem atribuições, em ZZ1 de laboratório já aberta e posicionada; não é um cadastro completo. Para tabelas padrão, prefira a rotina automática ou modelo que execute as regras do produto. (Fontes: refs. 1–3.)
Exemplo comentado
#Include "Protheus.ch"
User Function Ed613()
// Executar apenas em ZZ1 de laboratorio, aberta e posicionada.
If Select("ZZ1") > 0
If !ZZ1->(Eof())
If RecLock("ZZ1",.F.)
// Atribuicoes validadas seriam feitas aqui.
ZZ1->(MsUnlock())
EndIf
EndIf
EndIf
Return NilSe as precondições forem atendidas, tenta bloquear e finalizar sem alterar campos. Em falha de lock não escreve. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.
- Não use SoftLock como prova de que RecLock teve sucesso. Planeje erros e restauração sem desbloquear recursos alheios.
- Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Comentários
Ainda não há comentários aprovados.
Entre com Google ou Microsoft para comentar.