Descobrir última pergunta executada pelo Protheus

Olá pessoal…

Recentemente desenvolvi uma rotina que retorna o código da última pergunta executada pelo Protheus (SX1, através da rotina Pergunte).

AdvPL
AdvPL

Mas qual seria a funcionalidade real da rotina? Simples, existem várias funções no padrão, que chamam duas ou três perguntas diferentes (como Documento de Saída) e através de pontos de entrada, precisamos saber qual foi a última pergunta executada, foi por essa necessidade que a rotina foi desenvolvida.

A rotina basicamente, verifica se o grupo de perguntas, não está no início, caso não esteja, volta 1 registro, pois toda vez que a rotina Pergunte é chamada, ela não volta o ponteiro na SX1, portanto, sempre ao voltar 1, foi a última pergunta carregada na memória.

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zLastPerg
Retorna a última pergunta executada pelo Protheus
@type function
@author Atilio
@since 05/03/2016
@version 1.0
	@return cPerg, Código da pergunta
/*/

User Function zLastPerg()
	Local aArea   := GetArea()
	Local aAreaX1 := SX1->(GetArea())
	Local cPerg   := ""
	
	DbSelectArea("SX1")
	
	//Se não tiver no começo da tabela
	If ! SX1->(BoF())
		//Volta um registro e pega o grupo
		SX1->(DbSkip(-1))
		cPerg := SX1->X1_GRUPO
	EndIf
	
	RestArea(aAreaX1)
	RestArea(aArea)
Return cPerg

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

Deixe uma resposta