Inclusão, alteração, exclusão lógica e gravação de registros
RecLock(cAlias,lAdd) → campos → MsUnlock(); DBDelete()Distingue bloqueio, alteração de campos e exclusão lógica.
Visão geral
RecLock(alias,.T.) inicia inclusão e .F. tenta bloquear o registro posicionado para alteração; verificar retorno antes de escrever. MsUnlock finaliza o bloqueio, mas não equivale sozinho a uma transação de negócio com várias tabelas. DBDelete marca exclusão lógica e não remove fisicamente. O exemplo usa tabela temporária própria, sem cadastros de produção. O código comunitário referenciado contém mensagens dentro de transação e chamadas sem verificar RecLock; essas partes não são reproduzidas. (Fontes: refs. 1–3.)
Sintaxe
RecLock(cAlias,lAdd) → campos → MsUnlock(); DBDelete()Exemplo comentado
#Include "Protheus.ch"
User Function Ed485()
Local oTmp := FWTemporaryTable():New(GetNextAlias(),{{"ED_TEXT","C",20,0}})
Local cAlias
// Somente tabela temporaria de teste.
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 NilDemonstra inclusão, alteração e marca de exclusão na temporária, depois remove a tabela própria. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.
- Preferir rotinas de negócio e MVC para cadastros reais. Prever tratamento de falhas, limpeza e concorrência.
- 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.