- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Saber se outro usuário está acessando uma determinada rotina
×
Linguagem de Programação ADVPL
Perguntas Saber se outro usuário está acessando uma determinada rotina
- s_prat
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 27
- Obrigados Recebidos: 0
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
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.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
9 anos 1 mês atrás #29467
por kanaamlrr
Respondido por kanaamlrr no tópico Saber se outro usuário está acessando uma determinada rotina
Crie um arquivo de semáforo.
Segue um exemplo:
e crie a função abaixo:
Não esqueça de no fim da execução chamar
dessa forma você apaga o semáforo e libera para outro acessar.
Abraço!
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.
- Tony.totvs
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 47
- Obrigados Recebidos: 0
9 anos 1 mês atrás #29470
por Tony.totvs
Respondido por Tony.totvs no tópico Saber se outro usuário está acessando uma determinada rotina
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
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.
- s_prat
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 27
- Obrigados Recebidos: 0
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Saber se outro usuário está acessando uma determinada rotina
Tempo para a criação da página:0.084 segundos