MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

4 participantes

    [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE)

    avatar
    Matheus Bohn
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 86
    Registrado : 28/10/2020

    [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE) Empty [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE)

    Mensagem  Matheus Bohn 2/12/2020, 11:55

    Bom dia!

    Surgiu essa necessidade, preciso derrubar todos os usuários FE. Encontrei alguma coisa sobre o assunto, mas nenhum exemplo para que eu pudesse aplicar.
    ANTONILDO CORDEIRO
    ANTONILDO CORDEIRO
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 25
    Registrado : 02/04/2019

    [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE) Empty Re: [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE)

    Mensagem  ANTONILDO CORDEIRO 2/12/2020, 16:25

    avatar
    Matheus Bohn
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 86
    Registrado : 28/10/2020

    [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE) Empty Re: [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE)

    Mensagem  Matheus Bohn 2/12/2020, 18:27

    ANTONILDO CORDEIRO, perfeita essa solução. Muito obrigado.
    Assis
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4487
    Registrado : 06/11/2009

    [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE) Empty Re: [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE)

    Mensagem  Assis 4/12/2020, 13:11

    Boa tarde

    No meu exemplo consigo abrir um formulário aonde são listados os usuário em rede.

    Os Usuários logados são registados estão numa Tabela, com 2 campos:

    Nome da Tabela é - TabAcesso

    Campo Texto- Usuário

    Campo Texto - PC ' Indica o nome do computador, novo campo

    Campo Data - DataAcesso

    - Os dados são gravados na tabela pelo usuário ao fazer o Login de entrada.

    - Cada Usuário ao sair da seu Front automaticamente elimina o seu registo


    Imagem:

    [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE) Sem_t165



    Eu como Administrador queria desligar todos os outros logados ao clikar no  X(Vermelho)    e desligar o Programa nos computadores Ligados


    Que código usar ???

    Obrigado


    Última edição por Assis em 9/12/2020, 10:35, editado 4 vez(es)


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    Matheus Bohn
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 86
    Registrado : 28/10/2020

    [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE) Empty Re: [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE)

    Mensagem  Matheus Bohn 5/12/2020, 19:54

    Assis, muito obrigado, muito interessante a tua solução.
    Por enquanto vou manter alternativa anterior, já que tive uma M.O e fiz algumas melhorias, incluindo barra de progresso e tals.

    Agradecido.
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7312
    Registrado : 15/03/2013

    [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE) Empty Re: [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE)

    Mensagem  ahteixeira 6/12/2020, 00:42

    Olá a todos,

    Assis, pode usar o código que o colega indicou na mensagem n. 2.

    Só tem que ajustar o código para ser executado quando não é o Administrador, algo assim:

    If utilizadorLogado <> "Administrador" then ...


    Abraço
    Assis
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4487
    Registrado : 06/11/2009

    [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE) Empty Re: [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE)

    Mensagem  Assis 6/12/2020, 12:03

    Bom dia Teixeira

    - Com este comando elimino-os da tabela " tabAcessos ".

    - Mas os Front-End, continuam aberto.


    - Será possível desliga-los ?


    '*********************************************************************************

    If Me!Lista14.ItemsSelected.Count = 0 Then    'Se não houver nenhum usuário selecionado
                                                    'Informo que deve-se selecionar um usuário para encerrá-lo
           MsgBox "Não há usuário selecionado para encerrar!" & vbNewLine & "Por favor, selecione o usuário que deseja encerrar.", vbExclamation, "Sem seleção"
       Else    'Caso exista um usuário selecionado
           DoCmd.SetWarnings off    'Desativo os avisos padrões do Access para não informar/confirmar a alteração na tabela
           
           CurrentDb.Execute "DELETE FROM tabAcessos WHERE usuário ='" & Lista14.ItemData(Linha) & "'"
           
           DoCmd.SetWarnings True    'Ativo os avisos padrões do Access
           Me!Lista14.Requery         'Atualizo a lista de usuários logados para continuar mostrando apenas os logados
       End If

    '*********************************************************************************

    Obrigado


    .................................................................................
    *** Só sei que nada sei ***
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7312
    Registrado : 15/03/2013

    [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE) Empty Re: [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE)

    Mensagem  ahteixeira 6/12/2020, 21:17

    Olá a todos,

    Assis, no exemplo referenciado, utiliza uma técnica de verificar se existe um determinado ficheiro.
    Se pretende aplicar a mesma tecnica excepto para o utilizador administrador ou outro que desejar, o que tem de fazer é verificar o utilizador logado.

    Código:

    IF utilizadorLogado <> "administrador" then
    If Len(Dir("\\Server\sistemas\GESTOR\GESTOR\KickOutEng.txt")) Then
    DoCmd.OpenForm "1-AVISO_FECHAR_GESTOR", acNormal, "", "", , acNormal
    End If
    end if

    Seria algo assim.

    Quanto ao seu código, seria "derrbar o utilizador", dessa forma desconheço.

    Abraço
    Assis
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4487
    Registrado : 06/11/2009

    [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE) Empty Re: [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE)

    Mensagem  Assis 7/12/2020, 12:33

    Obrigado Teixeira

    Nesta parte estou com duvida, e a BD está a 8000 (Oito Mil) kilometros de distancia

    If Len(Dir("\\Server\sistemas\GESTOR\GESTOR\KickOutEng.txt")) Then
    DoCmd.OpenForm "1-AVISO_FECHAR_GESTOR", acNormal, "", "", , acNormal


    .................................................................................
    *** Só sei que nada sei ***
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7312
    Registrado : 15/03/2013

    [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE) Empty Re: [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE)

    Mensagem  ahteixeira 9/12/2020, 16:33

    Olá Assis,

    Não importa se está 8000 Km de distancia, o que importa é se está em rede e os utilizadores que estão ligados.
    Repare Assis, o que o sistema faz é verificar de x em x tempo (conforme foi programado no formulario) se existe um determinado ficheiro (no exemplo está a verificar: \\Server\sistemas\GESTOR\GESTOR\KickOutEng.txt).
    Ora, se existir no formulário tem o código para fechar a base de dados, e lógicamente vai acontecer em todos os FrontEnds que estiverem abertos.
    A sua pergunta foi, como fazer fechar todos menos o Administrador (ou outro).
    A minha sugestão foi um simples IF para verificar o utilizador logado antes de executar o resto do código.

    Assis, fui claro na explicação?

    Abraço a todos
    Assis
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4487
    Registrado : 06/11/2009

    [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE) Empty Re: [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE)

    Mensagem  Assis 13/12/2020, 12:47

    Boa tarde Teixeira

    Tenho um formulário chamado "Menu" que é o formulário principal da Base de Dados, portanto estando a BD aberta este formulário também está.

    Nesse formulário no acontecimento:

    Private Sub Form_Timer()

    If (IsNull(DLookup("[Usuário]", "TabAcessos", "[Usuário] = '" & Me!txtNomeUsuario & "'"))) Then

    ' Este Me!txtNomeUsuario é o campo que indica o nome do utilizador logado

     DoCmd.Quit
         
        Else

    End If


    No dito Botão da mensagem Nº 4 com o código




    If Me!Lista14.ItemsSelected.Count = 0 Then    'Se não houver nenhum usuário selecionado
                                                   'Informo que deve-se selecionar um usuário para encerrá-lo
                             
         
                                                   
          MsgBox "Não há usuário selecionado para encerrar!" & vbNewLine & "Por favor, selecione o usuário que deseja encerrar.", vbExclamation, "Sem seleção"
      Else    'Caso exista um usuário selecionado
          DoCmd.SetWarnings False    'Desativo os avisos padrões do Access para não informar/confirmar a alteração na tabela

          CurrentDb.Execute "DELETE FROM tabAcessos WHERE usuário ='" & Lista14.ItemData(Linha) & "'"

          DoCmd.SetWarnings True    'Ativo os avisos padrões do Access
          Me!Lista14.Requery         'Atualizo a lista de usuários logados para continuar mostrando apenas os logados
         

      End If


    .................................................................................
    *** Só sei que nada sei ***
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7312
    Registrado : 15/03/2013

    [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE) Empty Re: [Resolvido]Derrubar todos os usuários(sistema em rede dividido entre FE e BE)

    Mensagem  ahteixeira 16/12/2020, 09:38

    Olá Assis,

    Como dia o nosso grande JPaulo, existe muitas formas de fazer Nestum.
    Fica mais esta alternativa com recurso a uma tabela no BackEnd.

    Abraço a todos

      Data/hora atual: 26/9/2021, 10:09