Travando registros para atualização com MsUnlock, RecLock e SoftLock – Maratona AdvPL e TL++ 365

Nesse vídeo demonstraremos a utilização das funções MsUnlock, RecLock e SoftLock, que servem para travar / destravar registros para atualização ou inclusão de informações.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe365
Trava uma tabela para atualizações de informações
@type Function
@author Atilio
@since 27/03/2023
@see https://tdn.totvs.com/pages/releaseview.action?pageId=24347005 e https://tdn.totvs.com/pages/releaseview.action?pageId=24347041 e https://tdn.totvs.com/pages/releaseview.action?pageId=24347081
@obs 

    Função MsUnlock
    Parâmetros
        Função não tem parâmetros
    Retorno
        Função não tem retorno

    Função SoftLock
    Parâmetros
        + cAlias    , Caractere    , Indica o alias que será verificado
    Retorno
        Retorna .T. ou .F. se conseguiu encontrar e travar

    Função RecLock
    Parâmetros
        + cAlias    , Caractere    , Indica o alias que será verificado
        + lAdd      , Lógico       , .T. se será inclusão ou .F. se será alteração
        + l1        , Lógico       , Compatibilidade
        + lSoft     , Lógico       , Pergunta para o usuário se deseja lockar novamente
        + lInJob    , Lógico       , Indica se ta rodando dentro de um Job
    Retorno
        + lRet      , Lógico       , Retorna .T. ou .F. se conseguiu encontrar e travar

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe365()
    Local aArea    := FWGetArea()
    Local cCodProd := "F0001"
 
    DbSelectArea("SB1")
    SB1->(DbSetOrder(1)) // B1_FILIAL + B1_COD
 
    //Posiciona no produto
    If SB1->(MsSeek(FWxFilial("SB1") + cCodProd))
        If SoftLock("SB1")
            Alert("Aqui pode ser feito validações antes do reclock...")
 
            RecLock("SB1", .F.)
                //SB1->B1_X_CAMPO := 'aaaa'
            SB1->(MsUnlock())
        EndIf
    EndIf
 
    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

2 Responses

  1. Jose de Aguiar Ferreira Real Neto disse:

    Gostei, mas esse cachorro ao fundo é chato hein.

    • Bom dia José, tudo joia?

      Opa, obrigado pelo comentário e feedback.

      Infelizmente na rua, onde moramos atualmente, existem muitos vizinhos com cachorros e acabam às vezes escapando os áudios. Talvez no futuro quando tivermos condição de nos mudar, tentaremos criar um ambiente mais isolado para não afetar a qualidade dos vídeos.

      De antemão, estamos tentando gravar os conteúdos por volta das 5h da manhã, mais cedo do que o habitual, para que não ocorra esses problemas (pois quando começa a ficar mais tarde, os cachorros começam a latir para pedestres).

      Pedimos desculpa pelo transtorno causado.

      Um grande abraço.

Deixe uma resposta

Terminal de Informação