× Linguagem de Programação ADVPL

Perguntas Checagem de usuario on-Line

Mais
7 anos 5 meses atrás #32213 por piwtorak
bom dia !
gostaria de saber como posso saber se um usuario JOAO está on line no sistema. Nao preciso saber
quem esta logado fora o joao ou mesmo senhas, etc... apenas se o joao esta logado, algo simples e objetivo
se alguem possuir este codigo agradeco.
abracos

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 5 meses atrás #32214 por kanaamlrr
Respondido por kanaamlrr no tópico Checagem de usuario on-Line
Você já olhou pelo dbAccess ou pelo Monitor?

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 5 meses atrás #32215 por kanaamlrr
Respondido por kanaamlrr no tópico Checagem de usuario on-Line
Eu tinha montado isso faz um tempo, talvez se você filtrar o array aUsuarios para pegar só o JOAO, resolva seu problema.
#Include 'Protheus.ch'

User Function MonitUser()
Private aOnline   := {}
Private aUsuarios := FWSFALLUSERS()//allusers()
  
VerOnline()


DEFINE DIALOG oDlg TITLE "Monitor Usuários" FROM 0,0 TO 0,0 PIXEL
oDlg:lMaximized := .T.
	                 
       
    // Cria Browse
    oBrowse := TCBrowse():New( 0 , 0, oDlg:oWnd:nClientWidth/2,oDlg:oWnd:nClientHeight/2-45,,;
                              {'Usuário','Data','Hora','Tempo'},{300,50,50,50},;
                              oDlg,,,,,{||},,,,,,,.F.,,.T.,,.F.,,, )
    // Seta array para o browse                            
    oBrowse:SetArray(aOnline) 
    // Adciona colunas
    oBrowse:AddColumn( TCColumn():New('Usuário',{ || aOnline[oBrowse:nAt,1] },,,,"LEFT",,.F.,.T.,,,,.F.,) ) 
    oBrowse:AddColumn( TCColumn():New('Data'  ,{ || aOnline[oBrowse:nAt,2] },,,,"LEFT",,.F.,.T.,,,,.F.,) ) 
    oBrowse:AddColumn( TCColumn():New('Hora' ,{ || aOnline[oBrowse:nAt,3] },,,,"LEFT",,.F.,.T.,,,,.F.,) )
    oBrowse:AddColumn( TCColumn():New('Tempo' ,{ || aOnline[oBrowse:nAt,4] },,,,"LEFT",,.F.,.T.,,,,.F.,) )
    
  ACTIVATE DIALOG oDlg CENTERED 



Return

Static Function VerOnline()
    aOnline := {}
    ProcRegua(Len(aUsuarios))
    For nx := 1 to Len(aUsuarios)
        PSWOrder( 1 )
        If PSWSeek( aUsuarios[nx][2], .T.)
            //Incproc("Processando "+Alltrim(PswRet()[1,4]))
            aLogon := FWUsrUltLog(PswRet()[1,1])
            if(aLogon[1]==dDatabase)
                nDuracao := SubtHoras(aLogon[1],aLogon[2],dDataBase,Left(Time(),5))
                If nDuracao < 0
                    nDuracao := 0
                EndIf
                cDuracao := SUBSTR(STRZERO(nDuracao, 5, 2), 1, 2) + ":" + STRZERO((nDuracao - INT(nDuracao) )* 60, 2)
                aadd(aOnline,{Alltrim(PswRet()[1,4]),dtoc(aLogon[1]),aLogon[2],cDuracao/*,aLogon[3],aLogon[4],aLogon[5]*/})
            Endif
        Endif
    Next
aOnline := aSort(aOnline,,,{|x,y| x[1]<y[1]})
Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 5 meses atrás #32216 por piwtorak
Respondido por piwtorak no tópico Checagem de usuario on-Line
vou tentar a dica do kanaam porque o que quero eh algo do tipo:

if joao esta on line executa isso.

grato.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.091 segundos
Joomla templates by a4joomla