Sintaxe

 

SOFTLOCK( <cAlias> )

 

Propósito

 

Trava o registro do arquivo de dados que está posicionado.

 

Argumentos

 

< cAlias >

 

Define o alias de referência da área de trabalho ativa, para o qual o registro posicionado será travado.

 

Utilização

 

Permite a reserva do registro posicionado na área de trabalho ativa, de forma que outras operações, com exceção da atual, não possam atualizar esse registro.

 

Ela difere da função RECLOCK(), pois não gera uma obrigação de atualização, e pode ser sucedida por ele.

 

No ERP Protheus, o SOFTLOCK() é utilizado nos browses, antes da confirmação da operação de alteração e exclusão, pois neste momento a mesma ainda não foi efetivada, mas outras conexões não podem acessar aquele registro pois o mesmo está em manutenção, o que garante a integridade da informação.

 

Exemplos

 

LOCAL lConfirma := .F.

 

dbSelectArea(“SA1”)

dbSetOrder(1)      // A1_FILIAL + A1_COD + A1_LOJA

dbSeek(xFilial(“SA1”) + “900001” + “01”)     // Busca exata

 

IF FOUND()    // Avalia o retorno da pesquisa realizada

          SOFTLOCK()     // Reserva o registro localizado

 

          // Função ilustrativa que exibe os dados do registro posicionado e permite a alteração dos mesmos.

          lConfirma := AlteraSA1()

 

          IF lConfirma

                    RECLOCK(“SA1”, .F.)

 

                    SA1->A1_NOME := “MARCOS AURELIUS TERCEIRUS”

                    SA1->A1_NREDUZ := “MARCOS AURELIUS”

 

                    MSUNLOCK()     // Destrava o registro, liberando o RECLOCK() e o SOFTLOCK() do registro

          ENDIF

ENDIF