Páginas filhas
  • RECLOCK()

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Inserção de Link no "Funções Relacionadas"
Composition Setup
import.css=/download/attachments/327912/newLayout.css
Portuguese

Pagetitle
RecLock
RecLock

Função: RecLock

Descrição:

Permite a inslusão ou alteração de um registro no alias informado.

Comportamento:

Quando parametrizada para inclusão de registro, informando o 2o parâmetro como .T., inicia internamente a inserção de um novo registro no alias especificado como parâmetro. O novo registro permanece apenas na memória do Servidor de Aplicação até o momento em que uma operação de reposicionamento de registro (DBSkip, DBGoto , DbSeek, etc...) ou uma operação que forçe o envio do registro ( DBCommit, MSUnlock, Recno) seja executada. O registro inserido permanece bloqueado em modo exclusivo para o processo que está realizando a inserção, até que a instruçáo MSunlock() seja chamada.

Quando parametrizada para alteração de registro, informando o 2o parâmetro como .F., tenta realizar um bloqueio do registro atualmente posicionado no alias especificado, para permitir realizar alterações nos campos deste registro.

O alias em questão não pode ser uma Query, ou estar aberto em modo de "somente leitura", pois neste caso nenhuma das operações (inclusão ou alteração) serão possíveis. A função RecLock() deve trabalhar em conjunto com a função MSUnlock(), que deve ser chamada assim que todos os dados que devam ser registrados nos campos do registro atual tenham sido alimentados.


Programa Fonte:
APLIB060.PRW

Sintaxe:

RecLock ( < cAlias > , < lAdd > , [ l1 ] , [ lSoft ] , [ lInJob ] ) --> lRet


Retorno:
lRet

    (logico)
  • .T. se conseguiu lockar o registro, .F. se deu erro


Exemplos:


Exemplo 01 - Inclusão
========================================
DbSelectArea("SA1")
RecLock("SA1", .T.)	
SA1->A1_FILIAL := xFilial("SA1")	
SA1->A1_COD := "900001"	
SA1->A1_LOJA := "01"
MsUnLock() // Confirma e finaliza a operação

Exemplo 02 - Alteração
======================================
DbSelectArea("SA1")
DbSetOrder(1)
If DbSeek("01"+"900001"+"01")	
  RecLock("SA1", .F.)		
  SA1->A1_NOME := "CLIENTE TESTE"		
  SA1->A1_NREDUZ" := "TESTE"	
  MsUnLock() //Confirma e finaliza a operação
EndIf


Parâmetros:


NomeTipoDescriçãoDefaultObrigatórioReferência
cAliasCaracterAlias da tabela alvo da inserção e/ou alteração de registro


lAddLógicoParâmetro que verifica se a instrução a ser executada é uma inclusão.


l1LógicoNão utilizado.F.

lSoftLógicoPergunta para o usuário se deseja lockar novamente o registro.F.

lInJobLógicoIndica se o comando está sendo executado de dentro de um Job.F.

Funções relacionadas:

MSUnlock()

Sintaxe

 

RECLOCK( <cAlias>, <lInclui> )

 

Propósito

 

Trava o registro do arquivo de dados que está posicionado, permitindo a gravação da inclusão ou da alteração.

 

Argumentos

 

< cAlias >

 

Define o alias que identifica a área de trabalho que será manipulada.

 

< lInclui >

 

Define se a operação será uma inclusão (.T.) ou uma alteração (.F.).

 

Utilização

 

Para gravar ou atualizar o conteúdo dos campos de um registro do arquivo de dados, é necessário travar (reservar) o registro. Para isso, utiliza-se a função RECLOCK(). Após a atualização, é necessário destravar o registro através da função MSUNLOCK() para que outros usuários possam atualizá-lo, caso seja necessário.

 

Exemplos

 

O exemplo abaixo descreve uma inclusão:

 

dbSelectArea(“SA1”)

 

RECLOCK(“SA1”, .T.)

 

SA1->A1_FILIAL     := xFilial(“SA1”)   // Retorna a filial de acordo com as configurações do ERP Protheus

SA1->A1_COD        := “900001”

SA1->A1_LOJA       := “01”

SA1->A1_NOME     := “MARCOS AURELIUS TERCEIRUS”

SA1->A1_NREDUZ := “MARCOS AURELIUS”

 

MSUNLOCK()     // Destrava o registro

 

 

O exemplo abaixo descreve uma alteração:

 

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

          RECLOCK(“SA1”, .F.)

 

          SA1->A1_NOME := “MARCOS AURELIUS TERCEIRUS”

          SA1->A1_NREDUZ := “MARCOS AURELIUS”

 

          MSUNLOCK()     // Destrava o registro

ENDIF

...