- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- testas se função esta em execução por qualquer usuario
×
Linguagem de Programação ADVPL
Perguntas testas se função esta em execução por qualquer usuario
- pinheiro
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 91
- Obrigados Recebidos: 0
11 anos 1 semana atrás #18549
por pinheiro
testas se função esta em execução por qualquer usuario foi criado por pinheiro
Bom dia. Tenho uma tela de manut de uma tabela e dentro desta rotina ele pode incluir/ alterar / excluir , mas tem uma opção de recalculo que tem que rodar "exclusive". Assim qdo o um usuario manda recalcular, se um segundo user tentar efetuar o recalculo , nao pode ser permitido. Tentei solucionar atraves de um FLAG num parametro MV_, porem se ocorrer do primeiro processo travar e o user sair con CTRL+ALT+DEL o parametro não atualiza e a rotina não executa novamente ate limpar o FLAG. Existe uma forma de verificar se uma rotina(function) esta sendo executada por outro usuario ?
Por favor Acessar ou Registrar para participar da conversa.
- RonaldoLopes
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 478
- Obrigados Recebidos: 2
11 anos 1 semana atrás #18557
por RonaldoLopes
Respondido por RonaldoLopes no tópico testas se função esta em execução por qualquer usuario
Bom dia, crie um parametro(MV_LIBUSU) informando quais usuários poderão executar esta rotina, dentro do seu fonte, faça a verificação por exemplo:
User Function DDBLOCK()
Local lOk := .T.
Local cParam := AllTrim(SuperGetMV("MV_LIBUSU"))
Local cUsuario := Alltrim(UsrRetName(__CUSERID))
If cUsuario $ cParam
lOk := .F.
EndIf
Return lOk
User Function DDBLOCK()
Local lOk := .T.
Local cParam := AllTrim(SuperGetMV("MV_LIBUSU"))
Local cUsuario := Alltrim(UsrRetName(__CUSERID))
If cUsuario $ cParam
lOk := .F.
EndIf
Return lOk
Por favor Acessar ou Registrar para participar da conversa.
- pinheiro
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 91
- Obrigados Recebidos: 0
11 anos 1 semana atrás #18565
por pinheiro
Respondido por pinheiro no tópico testas se função esta em execução por qualquer usuario
Ronaldo, bom dia.
Agradeço a sugestão, mas não é bem isto que desejo. A sua sugestão verifica quais usuarios estao liberados para executar a rotina.
O que desejo é verificar se a função JA ESTA SENDO EXECUTADA por algum usuario, e se tiver não permitir que qualquer outro, a utilize.
Agradeço a sugestão, mas não é bem isto que desejo. A sua sugestão verifica quais usuarios estao liberados para executar a rotina.
O que desejo é verificar se a função JA ESTA SENDO EXECUTADA por algum usuario, e se tiver não permitir que qualquer outro, a utilize.
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 1 semana atrás #18567
por kanaamlrr
Respondido por kanaamlrr no tópico testas se função esta em execução por qualquer usuario
Alexandre, tenta usar a função
GetUserInfoArray
para retornar o array com as informações do server.
Depois faça sua busca na posição 5 do array para verificar se já existe essa rotina em execução ou não.
Tome cuidado para não acabar encontrando a própria conexão e se bloqueando.
Seria interessante validar isso pelo PE CHKEXEC.
Não sei se funciona direito se tiver utilizando balanceamento de carga, porém você pode fazer uns testes.
Depois faça sua busca na posição 5 do array para verificar se já existe essa rotina em execução ou não.
Tome cuidado para não acabar encontrando a própria conexão e se bloqueando.
Seria interessante validar isso pelo PE CHKEXEC.
Não sei se funciona direito se tiver utilizando balanceamento de carga, porém você pode fazer uns testes.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- testas se função esta em execução por qualquer usuario
Tempo para a criação da página:0.067 segundos