Avaliação do Usuário

Estrela ativaEstrela ativaEstrela ativaEstrela ativaEstrela inativa
 

 

ACOMPANHE A SÉRIE

Sistema de Login e Senha no Access/VBA - Parte 1/5
Sistema de Login e Senha no Access/VBA - Parte 2/5
Sistema de Login e Senha no Access/VBA - Parte 3/5
Sistema de Login e Senha no Access/VBA - Parte 4/5
Sistema de Login e Senha no Access/VBA - Parte 5/5

EXEMPLO DO ARTIGO

Faça o download do exemplo do artigo para estudo: LoginSeguro.zip
O exemplo está completo, então, não se assuste caso você encontre códigos diferentes do que está sendo ensinado nesta parte do artigo.
Para compreendê-lo completamente estude primeiro todas as 5 partes do artigo.

DICA IMPORTANTE PARA ELEVAR SEU CONHECIMENTO

Assista as vídeo-aulas do Curso de Access 2010 (OfficeGuru) e também as do Curso de Programação em Access/VBA.
Para os leigos o Curso de Programação em Access/VBA é obrigatório.


INTRODUÇÃO

Um sistema que possui diversos usuários deve oferecer uma ferramenta que permita ao administrador gerenciá-los de forma adequada. Tarefas como inclusão, exclusão e alteração das informações dos usuários podem ser realizadas através de uma interface simples e algumas funções específicas.

Na terceira parte da série de 5 artigos sobre Login e Senha no Access/VBA, chegamos ao ponto de implementar as funcionalidades de gerenciamento de usuários. Com isto o administrador poderá incluir e excluir usuários, redefinir senhas, alterar grupos e até mesmo o login do usuário.

Infelizmente, possibilidades extras de gerenciamento, como bloqueio de usuários, verificação de status atual e controle de seção, entre outros, não serão abordados no momento, para que a série não se torne longa demais. Nesta série ficaremos apenas com as tarefas mais simples.

Mãos à obra, então, caro desenvolvedor.

GERENCIAMENTO DE USUÁRIOS

Para realizarmos o cadastro, o controle e a exclusão de usuários necessitaremos de uma interface que nos possibilite executar estas tarefas. Vamos então criar um formulário com o seguinte aspecto:

Formulário de Cadastro de Usuários

Estes são os requisitos obrigatórios do formulário:

  • O nome do formulário será FCadastroUsuario.
  • Ajuste a propriedade Popup = Sim.
  • O nome da caixa de texto que exibirá o login será txtLogin.
  • O nome da caixa de combinação que exibirá o grupo do usuário será cbxGrupo.
  • O nome do botão de atribuição da senha padrão será btnSenhaPadrao.
  • O nome do botão de exlusão será btnExcluir.
  • O tipo de formulário será Formulário Contínuo.
  • Barras de rolagem: somente vertical.

A Fonte do Registro do formulário será o seguinte código SQL:

SELECT login, grupo FROM Usuario ORDER BY grupo, login; 

Assim teremos, como fonte de dados, as colunas de login e grupo da tabela Usuario. É importante deixar a coluna chave da caixa de combinação cbxGrupo oculta, para que não fiquem aparecendo os valores numéricos ao invés do nome dos grupos.

Inclua também os rótulos de título de coluna e da informação de qual é a senha padrão.

Com este formuário poderemos incluir, excluir ou alterar as informações de qualquer usuário, inclusive realizar a troca de grupo, ajustando-o para as suas novas permissões.

Agora vamos começar a codificar a sua funcionalidade.

Formulários contínuos no Access sempre causam problemas quando utilizados em modo Popup. Para contornar esta dificuldade insira, no evento Ao Abrir, a seguinte instrução, responsável pelo dimensionamento do formulário:

Private Sub Form_Open(Cancel As Integer)
  DoCmd.MoveSize , , 16.4 * 567, 8 * 567
End Sub

Para quem não conhece esta técnica, ela multiplica o valor em centímetros que desejamos pelo valor 567, que é a quantidade de Twips equivalente a um centímetro. Caso as medidas do seu formulário sejam diferentes faça os ajustes necessários.


Piscando Dica: Twip: unidade de medida que equivale a 1/20 de um ponto, ou 1/1.440 de uma polegada. Existem 567 twips em um centímetro. (Fonte: Help do Access)



Agora, para redefinirmos a senha do usuário, retornando-a ao padrão do sistema, coloque o seguinte código no evento
Ao Clicar do botão btnSenhaPadrao. Antes disso, porém, devemos nos lembrar da organização e separação das responsabilidades. Vamos então atribuir a tarefa de mudança de senhas para o procedimento alterarSenha(), que também será criado no módulo ControleAcesso:

Sub alterarSenha(argLogin As String, argSenha As String)

    Dim strSql As String

    strSql = "Update Usuario Set senha='" & argSenha & "'" & _
            "Where login='" & argLogin & "'"
    DoCmd.SetWarnings False
    DoCmd.RunSQL strSql
    DoCmd.SetWarnings True
    
End Sub

Este procedimento recebe o login e a senha como parâmetros, monta o código SQL de atualização utilizando os critérios exigidos e executa a operação. Além disso desabilita as mensagens de confirmação padrão do Access. Isto é importante, pois desejamos utilizar as nossas próprias mensagens personalizadas, não é mesmo?



{ads1} 

CRIANDO A SENHA PADRÃO PARA O USUÁRIO

Contudo, ainda resta centralizarmos a configuração da senha padrão. Para isto crie uma constante privada chamada SENHA_PADRAO e uma função Get para a mesma, também no módulo ControleAcesso, para armazenar e recuperar este valor inicial de senha, conforme o código abaixo:

Private Const SENHA_PADRAO = "123456"

Function getSenhaPadrao() As String
  getSenhaPadrao = SENHA_PADRAO
End Function

Concluída a tarefa de alteração de senha, podemos codificar o botão:

Private Sub btnSenhaPadrao_Click()

  If Not IsNull(txtLogin) Then
  
    If MsgBox("Deseja atribuir a senha padrão para o usuário " & txtLogin & "?", _
                vbQuestion + vbYesNo, "Senha Padrão") = vbYes Then
    
      alterarSenha txtLogin, getSenhaPadrao
      MsgBox "A senha foi alterada com sucesso.", vbInformation, "Senha Padrão"
      
    End If
    
  End If

End Sub

Como você pode observar este procedimento verifica se há um usuário a ser gerenciado, questiona a redefinição de senha ao administrador que comandou a ação, obtem a senha padrão através da função getSenhaPadrao() e executa a chamada ao procedimento de atualização da senha. Ao final, exibe uma mensagem informando o sucesso da operação.

A tarefa de excluir um usuário ficará sob a responsabilidade do botão btnExcluir, através do código incluído no seu evento Ao Clicar:

Private Sub btnExcluir_Click()

  If MsgBox("Deseja excluir o usuário " & txtLogin & "?", _
              vbQuestion + vbYesNo, "Excluir Usuário") = vbYes Then
    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdDeleteRecord
  End If
  
End Sub

Para fecharmos esta etapa com chave de ouro, ficou faltando apenas definirmos a senha padrão para todos os novos usuários. Você havia percebido a falta deste procedimento? Caso tenha notado, meus parabéns.

O local mais indicado para executarmos este passo é no evento Após Inserir do formulário, já que este é um evento que é executado apenas após a inserção de um novo registro. Isto é exatamente o que queremos.

Vejamos o código:

Private Sub Form_AfterInsert()
  alterarSenha txtLogin, getSenhaPadrao
  MsgBox "O usuário " & txtLogin & " foi incluído com sucesso.", _
            vbInformation, "Novo Usuário"
End Sub

Além de incluir a senha padrão para o usuário exibiremos, ainda, uma mensagem informando o sucesso da operação.

Percebeu como foi produtivo separarmos as tarefas por responsabilidade? Reutilizamos o código de alteração de senha sem nenhum esforço extra. Esta é a vantagem de escrevermos as funções específicas em seu local apropriado.

Com isto nosso formuário de gerenciamento já possui todas as tarefas principais implementadas. O administrador tem agora o controle total sobre os usuários.

Mas temos então a seguinte situação: como o usuário irá alterar sua senha, caso deseje?

Naturalmente temos que implementar a tela de alteração de senha, a fim de oferecer esta opção.

No próximo artigo este será o assunto tratado. Nos encontramos na parte 4 da série Login e Senha.

 

Seja social. Compartilhe!