Olá, pessoal
Estou usando um sistema de login/senha que o Moderador Marcelo David me forneceu em janeiro deste e por sinal funcionando muito bem. No entanto, eu gostaria de resolver um probleminha no meu sistema.
Criei uma macro para abrir o form SistemaRegimeDisciplinar. Nele eu tenho dois botoes ENTRAR e SAIR, quando clico em ENTRAR é acionado o sistema de login/senha abrindo o form FLogin para o usuario logar no sistema. O meu problema começa aí, quando crio um usuario novo o sistema gera automaticamente uma senha padrão "123456" e no primeiro acesso o usuario é direcionado para o form de alterar senha, o qual fica em 2º plano, por trás do form SistemaRegimeDisciplinar. Eu queria saber que recurso posso utilizar para chamar esse form de alterar senha para frente do meu form principal. Esse form SistemaRegimeDisciplinar foi criado para fazer um fundo protegendo o painel de navegação, as guias do Access, para o usuario não ter nenhum acesso livre a todos os elementos do BD.
No evento "Ao clicar" do botão Login do form FLogin tem o código:
Option Compare Database
Option Explicit
Private Sub btnSair_Click()
If MsgBox("Deseja encerrar o aplicativo?", _
vbQuestion + vbYesNo, "Sair do Sistema") = vbYes Then
Application.SetOption "Perform Name AutoCorrect", True
Application.Quit
End If
End Sub
Private Sub btnLogin_Click()
Dim strSenha As String
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
Else
'Realizando a limpeza da senha
strSenha = limparSenha(txtSenha)
If verificaLogin(cbxLogin, strSenha) Then
DoCmd.Close
DoCmd.OpenForm "FPrincipal"
Else
MsgBox "Senha incorreta! Por favor, tente novamente.", vbExclamation, "Login"
txtSenha.SetFocus
End If
End If
End Sub
Private Sub Form_Open(Cancel As Integer)
Application.SetOption "Perform Name AutoCorrect", False
End Sub
Obs: na linha de comando: DoCmd.OpenForm "FPrincipal" esse FPrincipal não é o form a que me refiro acima, ele é outro form que é acessado logo após a confirmação do login e senha.
No evento "Ao Descarregar" do form FAlterarSenha tem o seguinte:
Option Compare Binary
Option Explicit
Private Sub btnAlterar_Click()
If IsNull(txtSenhaAtual) Then
MsgBox "Informe a senha atual.", vbExclamation, "Alterar Senha"
txtSenhaAtual.SetFocus
ElseIf Not verificaLogin(txtLogin, txtSenhaAtual) Then
MsgBox "Senha atual incorreta. Por favor, tente novamente.", _
vbExclamation, "Alterar Senha"
txtSenhaAtual.SetFocus
ElseIf IsNull(txtNovaSenha) Then
MsgBox "Informe a nova senha.", vbExclamation, "Alterar Senha"
txtNovaSenha.SetFocus
ElseIf txtNovaSenha = txtSenhaAtual Then
MsgBox "A nova senha deve ser diferente da atual.", _
vbExclamation, "Alterar Senha"
txtNovaSenha.SetFocus
ElseIf txtNovaSenha = txtLogin Then
MsgBox "A nova senha deve ser diferente do seu login.", _
vbExclamation, "Alterar Senha"
txtNovaSenha.SetFocus
ElseIf InStr(txtNovaSenha, "'") > 0 Then
MsgBox "A nova senha não pode conter aspas simples.", _
vbExclamation, "Alterar Senha"
txtNovaSenha.SetFocus
ElseIf InStr(txtNovaSenha, ";") > 0 Then
MsgBox "A nova senha não pode conter o caracter ponto e vírgula.", _
vbExclamation, "Alterar Senha"
txtNovaSenha.SetFocus
ElseIf txtNovaSenha = getSenhaPadrao Then
MsgBox "Nova senha inválida. Por favor, insira uma nova senha diferente.", _
vbExclamation, "Alterar Senha"
txtNovaSenha.SetFocus
ElseIf IsNull(txtConfirmaSenha) Then
MsgBox "Confirme a nova senha.", vbExclamation, "Alterar Senha"
txtSenhaAtual.SetFocus
ElseIf txtConfirmaSenha <> txtNovaSenha Then
MsgBox "Confirmação de senha incorreta. Por favor, tente novamente.", _
vbExclamation, "Alterar Senha"
txtConfirmaSenha.SetFocus
Else
'Testando a força da senha do usuário
'para necessidade de segurança média.
If forcaSenha(txtNovaSenha) >= 50 Then
alterarSenha txtLogin, txtNovaSenha
MsgBox "Senha Alterada com sucesso.", vbInformation, "Alterar Senha"
DoCmd.Close
Else
MsgBox "A senha escolhida não atende aos requisitos de segurança." & vbCrLf _
& vbLf & _
"Por favor, utilize letras maiúsculas e minúsculas, além" & vbCrLf & _
"de números e símbolos para criar uma senha forte." & vbCrLf _
& vbLf & _
"O tamanho mínimo recomendado é de 8 caracteres." _
, vbExclamation, "Senha Insegura"
End If
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
If verificaLogin(getUsuarioAtual, getSenhaPadrao) Then
MsgBox "Por favor, altere sua senha antes de continuar.", _
vbInformation, "Senha Padrão"
Cancel = True
End If
End Sub
Desde já, grato pela atenção de todos.
Edivaldo
Estou usando um sistema de login/senha que o Moderador Marcelo David me forneceu em janeiro deste e por sinal funcionando muito bem. No entanto, eu gostaria de resolver um probleminha no meu sistema.
Criei uma macro para abrir o form SistemaRegimeDisciplinar. Nele eu tenho dois botoes ENTRAR e SAIR, quando clico em ENTRAR é acionado o sistema de login/senha abrindo o form FLogin para o usuario logar no sistema. O meu problema começa aí, quando crio um usuario novo o sistema gera automaticamente uma senha padrão "123456" e no primeiro acesso o usuario é direcionado para o form de alterar senha, o qual fica em 2º plano, por trás do form SistemaRegimeDisciplinar. Eu queria saber que recurso posso utilizar para chamar esse form de alterar senha para frente do meu form principal. Esse form SistemaRegimeDisciplinar foi criado para fazer um fundo protegendo o painel de navegação, as guias do Access, para o usuario não ter nenhum acesso livre a todos os elementos do BD.
No evento "Ao clicar" do botão Login do form FLogin tem o código:
Option Compare Database
Option Explicit
Private Sub btnSair_Click()
If MsgBox("Deseja encerrar o aplicativo?", _
vbQuestion + vbYesNo, "Sair do Sistema") = vbYes Then
Application.SetOption "Perform Name AutoCorrect", True
Application.Quit
End If
End Sub
Private Sub btnLogin_Click()
Dim strSenha As String
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
Else
'Realizando a limpeza da senha
strSenha = limparSenha(txtSenha)
If verificaLogin(cbxLogin, strSenha) Then
DoCmd.Close
DoCmd.OpenForm "FPrincipal"
Else
MsgBox "Senha incorreta! Por favor, tente novamente.", vbExclamation, "Login"
txtSenha.SetFocus
End If
End If
End Sub
Private Sub Form_Open(Cancel As Integer)
Application.SetOption "Perform Name AutoCorrect", False
End Sub
Obs: na linha de comando: DoCmd.OpenForm "FPrincipal" esse FPrincipal não é o form a que me refiro acima, ele é outro form que é acessado logo após a confirmação do login e senha.
No evento "Ao Descarregar" do form FAlterarSenha tem o seguinte:
Option Compare Binary
Option Explicit
Private Sub btnAlterar_Click()
If IsNull(txtSenhaAtual) Then
MsgBox "Informe a senha atual.", vbExclamation, "Alterar Senha"
txtSenhaAtual.SetFocus
ElseIf Not verificaLogin(txtLogin, txtSenhaAtual) Then
MsgBox "Senha atual incorreta. Por favor, tente novamente.", _
vbExclamation, "Alterar Senha"
txtSenhaAtual.SetFocus
ElseIf IsNull(txtNovaSenha) Then
MsgBox "Informe a nova senha.", vbExclamation, "Alterar Senha"
txtNovaSenha.SetFocus
ElseIf txtNovaSenha = txtSenhaAtual Then
MsgBox "A nova senha deve ser diferente da atual.", _
vbExclamation, "Alterar Senha"
txtNovaSenha.SetFocus
ElseIf txtNovaSenha = txtLogin Then
MsgBox "A nova senha deve ser diferente do seu login.", _
vbExclamation, "Alterar Senha"
txtNovaSenha.SetFocus
ElseIf InStr(txtNovaSenha, "'") > 0 Then
MsgBox "A nova senha não pode conter aspas simples.", _
vbExclamation, "Alterar Senha"
txtNovaSenha.SetFocus
ElseIf InStr(txtNovaSenha, ";") > 0 Then
MsgBox "A nova senha não pode conter o caracter ponto e vírgula.", _
vbExclamation, "Alterar Senha"
txtNovaSenha.SetFocus
ElseIf txtNovaSenha = getSenhaPadrao Then
MsgBox "Nova senha inválida. Por favor, insira uma nova senha diferente.", _
vbExclamation, "Alterar Senha"
txtNovaSenha.SetFocus
ElseIf IsNull(txtConfirmaSenha) Then
MsgBox "Confirme a nova senha.", vbExclamation, "Alterar Senha"
txtSenhaAtual.SetFocus
ElseIf txtConfirmaSenha <> txtNovaSenha Then
MsgBox "Confirmação de senha incorreta. Por favor, tente novamente.", _
vbExclamation, "Alterar Senha"
txtConfirmaSenha.SetFocus
Else
'Testando a força da senha do usuário
'para necessidade de segurança média.
If forcaSenha(txtNovaSenha) >= 50 Then
alterarSenha txtLogin, txtNovaSenha
MsgBox "Senha Alterada com sucesso.", vbInformation, "Alterar Senha"
DoCmd.Close
Else
MsgBox "A senha escolhida não atende aos requisitos de segurança." & vbCrLf _
& vbLf & _
"Por favor, utilize letras maiúsculas e minúsculas, além" & vbCrLf & _
"de números e símbolos para criar uma senha forte." & vbCrLf _
& vbLf & _
"O tamanho mínimo recomendado é de 8 caracteres." _
, vbExclamation, "Senha Insegura"
End If
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
If verificaLogin(getUsuarioAtual, getSenhaPadrao) Then
MsgBox "Por favor, altere sua senha antes de continuar.", _
vbInformation, "Senha Padrão"
Cancel = True
End If
End Sub
Desde já, grato pela atenção de todos.
Edivaldo