Manipulando registros com AxInclui, AxAltera, AxDeleta e AxVisual – Maratona AdvPL e TL++ 061

Nesse vídeo demonstraremos a manipulação de registros com AxInclui (Inclusão), AxAltera (Alteração), AxDeleta (Exclusão) e AxVisual (Visualização).

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

//Bibliotecas
#Include "Totvs.ch"

/*/{Protheus.doc} User Function zExe061
Exemplo de função de tela de cadastro (o indicado é usar MVC, mas esse exemplo é apenas para demonstrar)
@author Atilio
@since 06/12/2022
@see https://tdn.totvs.com/pages/releaseview.action?pageId=6814985 , https://tdn.totvs.com/pages/releaseview.action?pageId=23889132 , https://tdn.totvs.com/pages/releaseview.action?pageId=23889138 e https://tdn.totvs.com/pages/releaseview.action?pageId=23889145
@type function
@obs 
    Função AxInclui
    Parâmetros
        + cAlias      , Caractere       , Alias da tabela
        + nReg        , Numérico        , Número do registro posicionado (RecNo) sendo o padrão 0 pois é uma inclusão
        + nOpc        , Numérico        , Número da opção sendo o padrão 3 de Inclusão
        + aAcho       , Array           , Array com nome dos campos que serão exibidos
        + cFunc       , Caractere       , Função que será executada antes de abrir a tela
        + aCpos       , Array           , Array com nome dos campos que poderão ser editados
        + cTudoOk     , Caractere       , Função que será executada ao clicar no botão confirmar
        + lF3         , Lógico          , Indica se a tela foi criada a partir de uma consulta padrão
        + cTransact   , Caractere       , Função que será executada dentro da transação
        + aButtons    , Array           , Botões que serão adicionados no Outras Ações dentro da tela de edição
        + aParam      , Array           , Funções que serão executadas sendo: [1] = Antes de Exibir a tela; [2] = Ao clicar no Confirmar (TudoOk); [3] = Após o confirmar dentro da transação; [4] = Após o confirmar fora da transação
        + aAuto       , Array           , Indica os campos em uma execucação automática
        + lVirtual    , Lógico          , Se .T. irá usar variáveis de memória (com RegToMemory: M->); senão irá usar os próprios campos
        + lMaximized  , Lógico          , Se .T. a janela virá maximizada, senão ela virá com o tamanho um pouco menor
        + cTela       , Caractere       , Nome da variável que será utilizada no lugar da aTela
        + lPanelFin   , Lógico          , Se for .T. cria o painel do gestor financeiro
        + oFather     , Objeto          , Quando usado o lPanelFin cria um dialog dentro do objeto indicado
        + aDim        , Array           , Quando usado o lPanelFin indica as dimensões da dialog que será criada
        + uArea       , Indefinido      , Quando usado o lPanelFin esse parâmetro será usado dentro das funções do gestor financeiro
    Retorno
        + nOpca       , Numérico        , Retorna 1 se o usuário clicou em Confirmar ou 2 se foi em Cancelar ou 3 se houve alguma falha ao acionar a tela

    Função AxAltera
    Parâmetros
        + cAlias      , Caractere       , Alias da tabela
        + nReg        , Numérico        , Número do registro posicionado (RecNo)
        + nOpc        , Numérico        , Número da opção sendo o padrão 4 de Alteração
        + aAcho       , Array           , Array com nome dos campos que serão exibidos
        + aCpos       , Array           , Array com nome dos campos que poderão ser editados
        + nColMens    , Numérico        , Parâmetro não usado (apenas compatibilidade)
        + cMensagem   , Caractere       , Parâmetro não usado (apenas compatibilidade)
        + cTudoOk     , Caractere       , Função que será executada ao clicar no botão confirmar
        + cTransact   , Caractere       , Função que será executada dentro da transação
        + aButtons    , Array           , Botões que serão adicionados no Outras Ações dentro da tela de edição
        + aParam      , Array           , Funções que serão executadas sendo: [1] = Antes de Exibir a tela; [2] = Ao clicar no Confirmar (TudoOk); [3] = Após o confirmar dentro da transação; [4] = Após o confirmar fora da transação
        + aAuto       , Array           , Indica os campos em uma execucação automática
        + lVirtual    , Lógico          , Se .T. irá usar variáveis de memória (com RegToMemory: M->); senão irá usar os próprios campos
        + lMaximized  , Lógico          , Se .T. a janela virá maximizada, senão ela virá com o tamanho um pouco menor
    Retorno
        + nOpca       , Numérico        , Retorna 1 se o usuário clicou em Confirmar ou 2 se foi em Cancelar ou 3 se houve alguma falha ao acionar a tela

    Função AxDeleta
    Parâmetros
        + cAlias      , Caractere       , Alias da tabela
        + nReg        , Numérico        , Número do registro posicionado (RecNo)
        + nOpc        , Numérico        , Número da opção sendo o padrão 5 de Exclusão
        + cTransact   , Caractere       , Função que será executada dentro da transação
        + aCpos       , Array           , Array com nome dos campos que serão exibidos
        + aButtons    , Array           , Botões que serão adicionados no Outras Ações dentro da tela de edição
        + aParam      , Array           , Funções que serão executadas sendo: [1] = Antes de Exibir a tela; [2] = Ao clicar no Confirmar (TudoOk); [3] = Após o confirmar dentro da transação; [4] = Após o confirmar fora da transação
        + aAuto       , Array           , Indica os campos em uma execucação automática
        + lMaximized  , Lógico          , Se .T. a janela virá maximizada, senão ela virá com o tamanho um pouco menor
    Retorno
        + nOpca       , Numérico        , Retorna 1 se o usuário clicou em Confirmar ou 2 se foi em Cancelar ou 3 se houve alguma falha ao acionar a tela

    Função AxVisual
    Parâmetros
        + cAlias      , Caractere       , Alias da tabela
        + nReg        , Numérico        , Número do registro posicionado (RecNo)
        + nOpc        , Numérico        , Número da opção sendo o padrão 2 de Visualização
        + aAcho       , Array           , Array com nome dos campos que serão exibidos
        + nColMens    , Numérico        , Parâmetro não usado (apenas compatibilidade)
        + cMensagem   , Caractere       , Parâmetro não usado (apenas compatibilidade)
        + cFunc       , Caractere       , Função que irá carregar os campos
        + aButtons    , Array           , Botões que serão adicionados no Outras Ações dentro da tela de edição
        + lMaximized  , Lógico          , Se .T. a janela virá maximizada, senão ela virá com o tamanho um pouco menor
    Retorno
        + nOpca       , Numérico        , Retorna 1 se o usuário clicou em Confirmar ou 2 se foi em Cancelar ou 3 se houve alguma falha ao acionar a tela
/*/

User Function zExe061()
	Local aArea   := FWGetArea()
	Local oBrowse
	Private aRotina := {}
	Private cCadastro := "Grupo de Produtos"

    DbSelectArea('SBM')
    SBM->(DbSetOrder(1)) //BM_FILIAL + BM_GRUPO

	//Definicao do menu
	aRotina := MenuDef()

	//Instanciando o browse
	oBrowse := FWMBrowse():New()
	oBrowse:SetAlias("SBM")
	oBrowse:SetDescription(cCadastro)
	oBrowse:DisableDetails()

	//Ativa a Browse
	oBrowse:Activate()

	FWRestArea(aArea)
Return Nil

/*/{Protheus.doc} MenuDef
Menu de opcoes na funcao zExe061
@author Atilio
@since 06/12/2022
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/

Static Function MenuDef()
	Local aRotina := {}

	//Adicionando opcoes do menu
	aAdd(aRotina, {"Pesquisar", "AXPESQUI", 0, 1})
	aAdd(aRotina, {"Visualizar", "AXVISUAL", 0, 2})
	aAdd(aRotina, {"Incluir", "AXINCLUI", 0, 3})
	aAdd(aRotina, {"Alterar", "AXALTERA", 0, 4})
	aAdd(aRotina, {"Excluir", "AXDELETA", 0, 5})
	aAdd(aRotina, {"Visualizar (manual)", "U_Z061VIS", 0, 2})
	aAdd(aRotina, {"Incluir (manual)", "U_Z061INC", 0, 3})
	aAdd(aRotina, {"Alterar (manual)", "U_Z061ALT", 0, 4})
	aAdd(aRotina, {"Excluir (manual)", "U_Z061EXC", 0, 5})

Return aRotina


/*/{Protheus.doc} Z061VIS
Visualizar (manual)
@author Atilio
@since 06/12/2022
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/

User Function Z061VIS()
	Local aArea       := FWGetArea()
    Local aAreaBM     := SBM->(FWGetArea())
    Local nOpcao      := 0
    Private cCadastro := "Teste de Visualização"
    
    //Chama a função
    nOpcao := AxVisual('SBM', SBM->(RecNo()), 2)
    If nOpcao == 1
        FWAlertInfo("Grupo visualizado: " + SBM->BM_GRUPO, "Exemplo AxVisual")
    EndIf
    
    FWRestArea(aAreaBM)
	FWRestArea(aArea)
Return


/*/{Protheus.doc} Z061INC
Incluir (manual)
@author Atilio
@since 06/12/2022
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/

User Function Z061INC()
    Local aArea       := FWGetArea()
    Local aAreaBM     := SBM->(FWGetArea())
    Local nOpcao      := 0
    Private cCadastro := "Teste de Inclusão"
    
    //Chama a função
    nOpcao := AxInclui('SBM', 0, 3)
    If nOpcao == 1
        FWAlertInfo("Grupo incluido: " + SBM->BM_GRUPO, "Exemplo AxInclui")
    EndIf
    
    FWRestArea(aAreaBM)
	FWRestArea(aArea)
Return


/*/{Protheus.doc} Z061ALT
Alterar (manual)
@author Atilio
@since 06/12/2022
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/

User Function Z061ALT()
	Local aArea       := FWGetArea()
    Local aAreaBM     := SBM->(FWGetArea())
    Local nOpcao      := 0
    Private cCadastro := "Teste de Alteração"
    
    //Chama a função
    nOpcao := AxAltera('SBM', SBM->(RecNo()), 4)
    If nOpcao == 1
        FWAlertInfo("Grupo alterado: " + SBM->BM_GRUPO, "Exemplo AxAltera")
    EndIf
    
    FWRestArea(aAreaBM)
	FWRestArea(aArea)
Return


/*/{Protheus.doc} Z061EXC
Excluir (manual)
@author Atilio
@since 06/12/2022
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/

User Function Z061EXC()
	Local aArea       := FWGetArea()
    Local aAreaBM     := SBM->(FWGetArea())
    Local nOpcao      := 0
    Private cCadastro := "Teste de Exclusão"
    
    //Chama a função
    nOpcao := AxDeleta('SBM', SBM->(RecNo()), 5)
    If nOpcao == 1
        FWAlertInfo("Grupo alterado: " + SBM->BM_GRUPO, "Exemplo AxDeleta")
    EndIf
    
    FWRestArea(aAreaBM)
	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