Função para filtrar tabelas no Protheus utilizando o AdvPL

Função para filtrar tabelas no Protheus utilizando o AdvPL

Olá pessoal…

Hoje vou mostrar como chamar a tela de filtragem padrão de registros de uma tabela utilizando o AdvPL.

Para utilizar esse recurso pessoal, nós chamamos a função SduExp dentro do fonte APSDU, essa função é aquela que quando você está no APSDU e você tem uma tabela aberta e você clica em filtrar ou dá um Ctrl+F, é mostrado aquela tela de pesquisa.

Tela de Filtragem
Tela de Filtragem

Para ela funcionar devidamente, abra o alias, e através do StaticCall nós iremos chamar essa função interna do APSDU, atribuindo o resultado em uma variável caracter. Se esse retorno tiver conteúdo, existe um filtro, e nós utilizamos no DbSetFilter, do contrário, não existe filtro, e nós poderemos limpar a tabela.

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zTeste
Função de teste para abrir a filtragem de tabela
@author Atilio
@since 21/10/2017
@version 1.0
@type function
/*/

User Function zTeste()
	Local aArea   := GetArea()
	Local cFiltro := ""
	
	//Mostrando a tela de filtro
	DbSelectArea('SA1')
	cFiltro := StaticCall(APSDU, SduExp)
	
	//Se tiver filtro, usa o DbSetFilter para filtrar a tabela
	If ! Empty(cFiltro)
		SA1->(DbSetfilter({|| &(cFiltro)}, cFiltro))
		
	//Senão, limpa qualquer filtragem
	Else
		SA1->(DbClearFilter())
	Endif
	
	RestArea(aArea)
Return

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.
Caso queira uma customização específica para sua empresa, saiba mais em nossa Loja.

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

%d blogueiros gostam disto: