Nesse vídeo demonstraremos a utilização das funções DbClearFilter e DbSetFilter, sendo que ambas servem para manipular filtros em um alias (uma limpa o filtro e a outra define o filtro).
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zExe118 Realiza (ou limpa) o filtro em um alias @type Function @author Atilio @since 13/12/2022 @see https://tdn.totvs.com/display/tec/DBClearFilter e https://tdn.totvs.com/display/tec/DBSetFilter @obs Função DBClearFilter Não possui parâmetros nem retorno Função DBSetFilter Parâmetros + bCond , Bloco de Código , Bloco de código a ser executado em AdvPL + cCond , Caractere , Condição a ser avaliada em AdvPL Retorno + Não possui retorno **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe118() Local aArea := FWGetArea() Local nAntes := 0 Local nComFiltro := 0 Local nDepois := 0 Local cFiltro := "" Local cMensagem := "" DbSelectArea("SBM") SBM->(DbSetOrder(1)) // Filial + Código do Grupo //Conta quantos registros tem antes do filtro Count To nAntes SBM->(DbGoTop()) //Monta o filtro que será usado, aplica e conta quantos registros ficaram cFiltro := "! Empty(SBM->BM_GRUPO) .And. ! Empty(SBM->BM_PROORI)" SBM->(DbSetFilter({|| &(cFiltro)}, cFiltro)) Count To nComFiltro SBM->(DbGoTop()) //Agora limpa o filtro e conta quantos registros ficaram SBM->(DbClearFilter()) Count To nDepois SBM->(DbGoTop()) //Monta a mensagem e exibe cMensagem := "Antes (ao abrir a tabela): " + cValToChar(nAntes) + CRLF cMensagem += "Com o Filtro: " + cValToChar(nComFiltro) + CRLF cMensagem += "Após a Limpeza do Filtro: " + cValToChar(nDepois) FWAlertInfo(cMensagem, "Teste DbSetFilter e DbClearFilter") FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.