Hoje vou mostrar uma forma de como atualizar um campo de uma tabela, sem precisar abrir a tela padrão de alteração.
Existem algumas telas do Protheus, que não permitem a alteração de alguns campos, ou outras que para alterar é necessário abrir a tela, acionar a opção Alterar e procurar o campo em questão.
Pensando nisso, e em facilitar para o usuário, quando ele precisa alterar um único campo, ou ele não tenha acesso a alteração, podemos fazer um processo paliativo.
Adicionar uma opção no Outras Ações, que chama uma tela para informar o campo em um ParamBox.
Então, imagina o cenário, o usuário não tem acesso para alterar clientes (tabela SA1), mas ele deve informar o e-Mail atualizado do cliente. Então foi criado uma função com um ParamBox, que ao ser confirmado irá atualizar o cliente atualizado.
Abaixo o exemplo.
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zAltMail Função de exemplo para alterar e-Mail do cadastro de clientes @type Function @author Atilio @since 27/03/2021 @version version /*/ User Function zAltMail() Local aArea := GetArea() Local aPergs := {} Local cEmail := SA1->A1_EMAIL //Adiciona os parâmetros da pergunta aAdd(aPergs, {1, "e-Mail", cEmail, "", ".T.", "", ".T.", 120, .T.}) //Se a pergunta for confirmada If ParamBox(aPergs, "Informe os parâmetros", , , , , , , , , .F., .F.) //Aqui é feito a alteração no cadastro da SA1 Posicionada RecLock('SA1', .F.) SA1->A1_EMAIL := MV_PAR01 SA1->(MsUnlock()) EndIf RestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Excelente dica!
Opa, obrigado pelo feedback Edivaldo.