Como filtrar registros do Banco de Conhecimento por quem fez o Upload

No artigo de hoje vamos demonstrar em como filtrar registros do Banco de Conhecimento, como por exemplo, mostrar somente registros que foram feitos upload por determinado usuário.

  1. Crie campos AC9, e no inic padrão coloque a informação desses campos, por exemplo, um campo de usuário (AC9_X_USR) com o inic. padrão RetCodUsr() ou um campo de módulo (AC9_X_MOD) com o conteúdo cModulo
  2. Assim quando for feito um upload de arquivo, será gravado dados na AC9
  3. Ai através do ponto de entrada MSDOCVIS, nós fazemos o filtro comparando o módulo ou o usuário
//Bibliotecas
#Include "TOTVS.ch"
 
/*/{Protheus.doc} User Function MSDOCVIS
Ponto de Entrada após carregar o aCols da tela de Banco de Conhecimento (MpDocument / MsDocument)
@type  Function
@author Atilio
@since 24/11/2022
@see https://tdn.totvs.com/pages/releaseview.action?pageId=6087680
@obs Foi usado esse ponto de entrada, pois os dados da AC9 ficam no aCols
    Ai é possível filtrar, pois não tem outro p.e. antes que dê pra usar o DbSetFilter
 
    Foi deixado apenas o filtro por Módulo em que foi feito o Upload (ex.: FAT, COM, GPE, etc)
    Mas o campo de usuário também existe, caso queira voltar o filtro, basta descomentar os
    trechos que acionam a variável cUserAtu
/*/
 
User Function MSDOCVIS()
    Local aArea    := GetArea()
    Local lRet     := .F.
    Local nLinha   := 1
    //Local nPosUser := GdFieldPos("AC9_X_USR")
    //Local cUserAtu := RetCodUsr()
    Local nPosMod  := GdFieldPos("AC9_X_MOD")
    Local cModAtu  := cModulo
     
    //Percorre todas as linhas dos dados da AC9
    For nLinha := 1 To Len(aCols)
         
        //Se houver linhas válidas (pois após o aSize, pode chegar em um momento que o tamanho do aCols seja 0)
        If Len(aCols) > 0
 
            //Se o módulo logado for diferente do módulo onde foi feito vínculo no Upload, remove a linha do aCols
            If cModAtu != aCols[nLinha][nPosMod]
                aDel(aCols, nLinha)
                aSize(aCols, Len(aCols)-1)
                nLinha--
            EndIf
 
            //Se o usuário atual for diferente do usuário que fez o vínculo no Upload, remove a linha do aCols
            /*ElseIf cUserAtu != aCols[nLinha][nPosUser]
                aDel(aCols, nLinha)
                aSize(aCols, Len(aCols)-1)
                nLinha--
            EndIf*/
        EndIf
    Next
 
    RestArea(aArea)
Return lRet

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