Colocando uma tabela em memória com a RegToMemory – Maratona AdvPL e TL++ 406

Nesse vídeo demonstraremos a utilização da função RegToMemory, que serve para colocar uma tabela em memória.

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

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe406
Deixa uma tabela em memória para edição (M->)
@type Function
@author Atilio
@since 28/03/2023
@see https://tdn.totvs.com/pages/releaseview.action?pageId=6814879
@obs 
    Função RegToMemory
    Parâmetros
        + cAlias     , Caractere     , Alias da Tabela
        + lInc       , Lógico        , .T. se for inclusão ou .F. se for alteração
        + lDic       , Lógico        , .T. se irá se basear no dicionário de dados da SX3
        + lInitPad   , Lógico        , .T. se irá iniciliazar os campos em uma operação de inclusão baseado no lDic
        + cStack     , Caractere     , Compatibilidade / Reservado
    Retorno
        Função não tem retorno

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

User Function zExe406()
    Local aArea     := FWGetArea()
    Local cCampo    := ""

    //Inicia o controle de transações
    Begin Transaction
        //Joga a tabela para a memória (M->)
        RegToMemory(;
            "SA1",;   // cAlias - Alias da Tabela
            .T.,;     // lInc   - Define se é uma operação de inclusão ou atualização
            .F.;      // lDic   - Define se irá inicilizar os campos conforme o dicionário
        )

        //Preenche o estado e o código da cidade
        M->A1_EST     := "SP"
        M->A1_COD_MUN := "06003"

        //Chama gatilho caso exista
        cCampo := "A1_COD_MUN"
        If ExistTrigger(cCampo)
            RunTrigger( ;
                1,;           //nTipo (1=Enchoice; 2=GetDados; 3=F3)
                Nil,;         //Linha atual da Grid quando for tipo 2
                Nil,;         //Não utilizado
                ,;            //Objeto quando for tipo 1
                cCampo;       //Campo que dispara o gatilho
            )
        EndIf

        //Mostra a cidade preenchida conforme gatilho disparado
        FWAlertInfo("Cidade: " + M->A1_MUN, "Teste de ExistTrigger e RunTrigger")

        //Cancela a transação para não incluir nenhum registro
        DisarmTransaction()
    End Transaction

    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.

Deixe uma resposta

Terminal de Informação