Avaliação do Usuário

Estrela ativaEstrela ativaEstrela ativaEstrela ativaEstrela ativa
 


{ads1} 

FUNÇÃO DE VERIFICAÇÃO DE SENHA

Agora vamos retirar o código que realiza a validação da senha no formulário FLogin e transferir esta responsabilidade para uma função, que se chamará verificaLogin(). Ela deverá ser criada no módulo ControleAcesso, ou em outro módulo padrão. Veja o código:

Function verificaLogin(argLogin As String, argSenha As String) As Boolean

    Dim criterio As String
    
    criterio = "login='" & argLogin & "' And senha='" & argSenha & "'"
    
    If Nz(DCount("login", "Usuario", criterio), 0) > 0 Then
        verificaLogin = True
        setUsuarioAtual argLogin
    Else
        verificaLogin = False
    End If

End Function

Esta função recebe como parâmetros o nome de usuário, na variável argLogin, e a senha, na variável argSenha. Como resultado, a função retorna os valores True ou False, conforme a senha esteja correta ou incorreta, respectivamente. A função atribui, ainda, o valor da variável que armazena o nome do usuário atual.

Este método de verificação da senha é extremamente flexível, já que nos permite executá-lo a partir de qualquer parte do sistema, ao contrário do método anterior, no qual a verificação somente poderia ocorrer dentro do formulário FLogin. Além disso a manutenção do nosso código ficará facilitada, já que estará centralizada na função. Qualquer erro encontrado ou funcionalidade a ser implantada, deverão ser corrigidos ou incluídos em um único local, na função verificaLogin().

Devemos, então, alterar o código do botão btnLogin, no formulário FLogin, para que a verificação seja feita através de uma chamada à função criada anteriormente. Vamos deixá-lo da seguinte maneira:

Private Sub btnLogin_Click()
  
  If verificaLogin(cbxLogin, txtSenha) Then
    DoCmd.Close
    DoCmd.OpenForm "FPrincipal"
  Else
    MsgBox "Senha incorreta! Por favor, tente novamente.", vbExclamation, "Login"
    txtSenha.SetFocus
  End If
  
End Sub

Agora nós passamos os valores contidos nas caixas de login e senha diretamente para a função.

Faça o teste e veja como funciona.


Piscando Dica: Caso queira acompanhar passo-a-passo a execução do código, crie um ponto de interrupção. Para isto basta posicionar o cursor na linha desejada e pressionar F9. Quando ocorrer a parada vá pressionando F8 para ver cada momento do fluxo do programa. Você pode, inclusive, verificar o valor atual de cada variável posicionando o ponteiro do mouse sobre ela.



Não podemos nos esquecer de ajustar o código do botão btnLogout, do formulário FPrincipal, para limpar o valor da variável que armazena o usuário atual quando ele realizar o logout. Deixe o código assim:

Private Sub btnLogout_Click()
  
  If MsgBox("Deseja efetuar Logout?", vbQuestion + vbYesNo, "Logout") = vbYes Then
    setUsuarioAtual ""
    DoCmd.Close
    DoCmd.OpenForm "FLogin"
  End If
  
End Sub

VALIDAÇÃO DE CAMPOS PREENCHIDOS

Até agora não nos preocupamos com a possibilidade de o usuário tentar realizar o login sem informar o usuário ou a senha. Vamos atualizar o código do botão btnLogin para que isto seja verificado.

Private Sub btnLogin_Click()
  
  If IsNull(cbxLogin) Then
    MsgBox "Por favor, informe um nome de usuário!", vbExclamation, "Login Inválido"
    cbxLogin.SetFocus
  ElseIf IsNull(txtSenha) Then
    MsgBox "Por favor, informe a senha!", vbExclamation, "Senha Inválida"
    txtSenha.SetFocus
  ElseIf verificaLogin(cbxLogin, txtSenha) Then
    DoCmd.Close
    DoCmd.OpenForm "FPrincipal"
  Else
    MsgBox "Senha incorreta! Por favor, tente novamente.", vbExclamation, "Login"
    txtSenha.SetFocus
  End If
  
End Sub

Desta maneira, caso um dos itens não seja informado, uma mensagem será exibida e o foco será enviado para a caixa correspondente.

Experimente fazer o login sem informar o usuário ou a senha. Veja o que acontece. Depois execute o procedimento informando um usuário e senha corretos. Veja o nome do usuário atual e o seu grupo sendo exibidos no rodapé do formulário principal.


PiscandoDica: Boa prática de programação

Espero que o leitor tenha notado que não é necessário comparar as funções de verificação com o valor True ou False. Muito comum entre iniciantes, a atitude de comparar o resultado de uma expressão ou de uma função booleana com True ou False é totalmente desnecessária, já que a instrução If necessita apenas de um valor booleano para funcionar. Lembre-se, realizar esta comparação apenas obriga o processador a trabalhar mais.

Veja o que acontece quando a comparação é solicitada, no caso de senha correta, por exemplo:

If verificaLogin(cbxLogin, txtSenha) = True Then

==> Função verificaLogin() é executada e devolve o valor True:

If True = True Then

==> Comparação True = True é executada e devolve o valor True:

If True Then

==> Instrução If encontra valor True e executa o bloco para resultado verdadeiro.

A execução leva 3 etapas para concluir o processamento. Já se você omitir a comparação serão necessários apenas dois passos. Gostou?!?



Agora sim, nosso sistema está pronto, não é mesmo? A resposta é não.

Na terceira parte da série iremos implementar a tela e as funções de gerenciamento de usuários, como inclusão, exclusão e alteração de suas informações.

Encontro vocês no próximo. Até lá...

Seja social. Compartilhe!