× Linguagem de Programação ADVPL

Perguntas Saber se outro usuário está acessando uma determinada rotina

Mais
9 anos 1 mês atrás #29465 por s_prat
Bom dia nobres amigos,

Tenho aqui uma rotina customizada e gostaria de fazer uma pequena validação. Ao acessá-la preciso saber se algum outro usuário também está acessando essa rotina, pois se estiver, eu devo bloquear o acesso até ele resolver sair. Vocês poderiam me ajudar com essa empreitada??? Desde já agradeço.

Att,

John L B Lima

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 1 mês atrás #29467 por kanaamlrr
Crie um arquivo de semáforo.
Segue um exemplo:
If !SemafWKF("SUAROTINA"+cEmpAnt+cFilAnt, @nHdlSemaf, .T.)
		Alert("A rotina já está sendo executada para outro usuário nesse empresa!"+chr(13)+chr(10)+;
		"Tente novamente mais tarde.")	
	Return
EndIf

e crie a função abaixo:
Static Function SemafWKF(cRotina, nHdlSemaf, lCria)

Local lRET := .T.
                     
Default nHdlSemaf := 0                                                  
Default lCria     := .T.

If lCria
	nHdlSemaf := MSFCreate(cRotina+".LCK")
	IF nHdlSemaf < 0                           
		lRet := .F.
	Endif       
Else
	If File(cRotina+".LCK")
		FClose(nHdlSemaf)
		lRET := .T.
	EndIf
EndIf

Return lRET       

Não esqueça de no fim da execução chamar
SemafWKF("SUAROTINA"+cEmpAnt+cFilAnt, @nHdlSemaf, .F.)  

dessa forma você apaga o semáforo e libera para outro acessar.
Abraço!

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 1 mês atrás #29470 por Tony.totvs
Eu costumo usar o codigo abaixo:

aInfo := GetUserInfoArray()
lAchou := .F.

For m := 1 to Len(aInfo)
If ("MEURDMAKE" $ aInfo[m][11])
lAchou := .T.
EndIf
Next

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 1 mês atrás #29472 por s_prat
Muito obrigado pela ajuda pessoal!! Já deu certo aqui.

Por favor Acessar ou Registrar para participar da conversa.

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