sábado, 26 de setembro de 2020
DVD
ConteÚdo
DOWNLOADS
Interação
dicas aleatórias
Artigos

Encerrando Sessões de Usuario

Vou mostrar para vocês um maneira de derrubar usuarios em um sistema em Access. Se trata de uma logica muito simples e a implementação é facil.

Por: Mauri Gonçalves (maurigoncalves@gmail.com)
Publicado: 02/09/2006  Visitas: 4133
Dificuldade: Intermediário

Indicação de Artigo  Imprimir

Vou mostrar para vocês um maneira de derrubar usuarios em um sistema em Access. Se trata de uma logica muito simples e a implementação é facil.
No meu sistema experimental utilizei o arquivo que gerei ao fazer o artigo anterior: "Sistema Login/Senha Simples".

Versão utilizada: Microsoft Office Access 2003

Lógica do sistema
Ao entrar no sistema o usuario recebe o status "Online".
O administrador pode acessar uma tela com a lista de todos os usuarios que estão online. Quando ele clicar no botão "Derrubar" o usuario referente receberá o status "Derrubado" e isto causará uma reação em cascata fazendo com que no fim, apareça na tela do usuario o seguinte erro: "O sistema foi forçado a encerrar sua sessão".

Para esta logica funcionar, nós teremos que definir alguns parametros. Em um determinado periodo de tempo, se os parametros forem modificados algum coisa acontece. Esta é a idéia. Como expliquei antes, vou implementar no arquivo que usei no artigo anterior.


Figura 1: Para começarmos, inclua na tabela tbUsuarios o campo "Status".


Figura 2: Agora crie uma consulta da tabela tbUsuarios e adicione a condição "Online" no campo Status


Figura 3: Adicione o campo Status no formulario frmLogin.
No evento "Apos Atualizar" do campo SenhaDigitada, adicione o seguinte código:


Private Sub SenhaDigitada_AfterUpdate()
If SenhaDigitada = Senha Then
DoCmd.OpenForm "frmPadrao"
Status = "Online"
Form.Refresh
End If
End Sub



Figura 4: Na propriedade "Intervalo do cronômetro" digite "1000".
No evento "On Timer" adicione o seguinte código:


Private Sub Form_Timer()
If Status = "Derrubado" Then
Status = ""
DoCmd.Close
End If
End Sub



Figura 5: Crie um novo formulario acoplado á tabela tbUsuarios com o nome de frmUsuarios.
Nesta tela aparecerão os usuarios que estão online. O modo do formulario deve ser "Formulário Contínuo" para que possa exibir uma lista de registros. Adicione um botão "Derrubar" ao lado da Caixa de Texto que mostrará o nome do usuario. No evento "ao clicar" deste botão adicione o seguinte código:


Private Sub btDerrubar_Click()
Status.Value = "Derrubado"
End Sub


Da mesma forma como fizemos no formulario frmLogin, altere a propriedade "Intervalo do Cronometro" para "1000" e no evento "On Timer" adicione o seguinte código:


Private Sub Form_Timer()
Form.Recalc
Form.Refresh
Form.Requery
End Sub


Agora abra o formulario frmLogin e minimize-o. Abra o formulario principal do seu sistema (neste caso é o frmPadrao) e adicione uma caixa de texto. Na propriedade "Nome" para digite "UsuarioLogado". Nesta caixa de texto irá aparecer o nome do usuario que está logado no sistema.


Figura 6: Vá até a propriedade "Fonte do Controle" da caixa de texto que voce inseriu e abra o Construtor de Expressões. No lado esquerdo do Construtor, clique em "Formularios", em seguida "Formularios Carregados" e depois em "frmLogin" (daí o motivo de o formulario ter que estar aberto). Na lista ao lado, dê dois cliques no nome do componente, que é a caixa de combinação que está no formulario "frmLogin" e clique em OK.

Ainda no formulario frmUsuarios, altere a propriedade "Intervalo do Cronometro" deste formulario para "1000" e adicione o seguinte código, no evento "On Timer":


Private Sub Form_Timer()
If UsuarioLogado.Text = "#Nome?" Then
MsgBox "O sistema foi forçado a encerrar o seu acesso.", vbCritical
DoCmd.Close
Application.CloseCurrentDatabase
End If
End Sub


Salve tudo.


Figura 7:

Agora vou explicar o que fizemos:
Quando o usuario loga no sistema, o seu status é alterado para online. Na tela principal que ele vai acessar terá uma caixa de texto com nome dele, indicando que está logado normalmente. A cada segundo esta caixa de texto verifica o status do usuario lá no formulario de login (frmLogin) enquanto o status estiver "Online" o usuario continua trabalhando normalmente.

Aí o Administrador resolve derrubar este usuario. Para isso ele abre a tela com a lista de usuarios online (frmUsuarios). A cada segundo esta tela verifica os usuarios que estão online e mostra na tela. Entao o administrador escolhe o usuario na lista e clica no botão "Derrubar" que aparece ao lado do nome do usuario. Ao clicar o status deste usuario é alterado para "Derrubado" e ele some da lista de usuarios online. Sendo assim, dentro de um segundo o status no formulario frmLogin também é alterado para "Derrubado". Dentro de mais um segundo a caixa de texto no formulario principal do sistema verifica o status do usuario e vê que ele foi derrubado. Sendo assim ele exibe a mensagem: "O sistema foi forçado a encerrar o seu acesso.". O usuario se vê obrigado a clicar em OK e entao o Microsoft Access é fechado. Espero que a dica seja util. Até a próxima.

Mauri Gonçalves
maurigoncalves@gmail.com http://theaccess.zip.net

Links relacionados:
http://theaccess.zip.net

Artigos relacionados:
  Nenhum artigo relacionado



 

   Copyright © Ativo Access 2003 - 2020- Todos os direitos reservados   Política de Privacidade | Fale conosco