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


2 participantes

    [Resolvido]Dificuldade com login e permissão

    Mylton
    Mylton
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1012
    Registrado : 23/08/2010

    [Resolvido]Dificuldade com login e permissão Empty [Resolvido]Dificuldade com login e permissão

    Mensagem  Mylton 15/7/2023, 19:04

    Boa tarde
    Estou iniciando esse estudo de login associado a permissão por grupo para depois implementar a permissão para execução ou não das tarefas por ação do usuário no form.

    São duas dúvidas:
    1) O sistema de login para os usuários Admin e teste 01 abre e mostra no menu principal o nome da pessoa logada.
    Entretanto o Login Teste 2 e Teste 3 o botão de comando nem funciona.
    Já vi, corrigi e tentei... e não acho o bendito erro.

    2) Quando deixo de comentar na codificação do Frm_Login as linhas referente aos botões do comando de navegação (Bt_Nav_1, Bt_Nav_2 e Bt_Nav_3) para funcionem de acordo com usuário logado, apresenta o erro que não conseguiu localizar o campo "Bt_Nav_1 ou 2 ou 3" referido em sua expressão.





    Abaixo a codificação inteira do form (tbm em anexo)

    Option Compare Database

    Private Sub Bt_Login_Click()
    'Crio a variavel Nivel usuário
    Dim NivelUsuario As Integer

    'Crio a variavel TempSenha que será a senha temporária dada ao novo usuário
    Dim TempSenha As String

    'Crio a variavel ID
    Dim ID As Integer

    'Crio a variavel paara Usuário atual do form menu principal
    Dim UsuarioTemp As String

    If IsNull(Me.txt_Usuario) Then
    MsgBox "Entre com nome do usuário.", vbInformation, "Nome do Usuário Necessário"
    Me.txt_Usuario.SetFocus

    ElseIf IsNull(Me.txt_Senha) Then
    MsgBox "Digite a senha.", vbInformation, "Senha Necessária"
    Me.txt_Senha.SetFocus
    Else
    ' Nome do usuario/Tbl Usuario, Tbl Usuario, Nome do usuario/Tabl Usuario /Nome campo usuario Form
    If (IsNull(DLookup("Nome_Usuario", "Tbl_Usuario", "Nome_Usuario='" & Me.txt_Usuario.Value & "'"))) Or _
    IsNull(DLookup("Senha_Usuario", "Tbl_Usuario", "Senha_Usuario='" & Me.txt_Senha.Value & "'")) Then
    ' Acima = Senha do usuario/Tbl Usuario, Tbl Usuario, Senha do usuario/Tabl Usuario /Nome campo senha do usuario Form
    MsgBox "Nome do usuário ou senha errados.", vbInformation, "Acesso negado"
    Me.txt_Usuario = ""
    Me.txt_Senha = ""
    Me.txt_Usuario.SetFocus

    Else
    'Uso a variavel NivelUsuario
    NivelUsuario = DLookup("[Nivel_Usuario]", "Tbl_Usuario", "Nome_Usuario='" & Me.txt_Usuario.Value & "'")
    'Uso a variavel TempSenha
    TempSenha = DLookup("[Senha_Usuario]", "Tbl_Usuario", "Nome_Usuario='" & Me.txt_Usuario.Value & "'")
    'Uso a variavel ID
    ID = DLookup("Id_Usuario", "Tbl_Usuario", "Nome_Usuario='" & Me.txt_Usuario.Value & "'")
    'Uso a variavel UsuárioTemp
    UsuarioTemp = Me.txt_Usuario


    If (TempSenha = "Senha_Usuario") Then
    DoCmd.OpenForm "Frm_Cad_Usuario", , , "[Id_Usuario]=" & ID

    Else

    'Função usuario logado Administrador
    If NivelUsuario = 1 Then
    MsgBox "Acesso permitido", vbInformation, "Autenticação efetuada com sucesso"
    DoCmd.OpenForm "Frm_MenuInicial"
    Forms![Frm_MenuInicial]![Txt_Usuario_Atual] = UCase(UsuarioTemp)
    Forms![Frm_MenuInicial]![Bt_Nav_1].enable = True
    Forms![Frm_MenuInicial]![Bt_Nav_2].enable = True
    Forms![Frm_MenuInicial]![Bt_Nav_3].enable = True

    'Função usuario logado usuário
    ElseIf NivelUsuario = 2 Then
    DoCmd.OpenForm "Frm_MenuInicial"
    'Coloca nome usuario logado no form
    Forms![Frm_MenuInicial]![Txt_Usuario_Atual] = UCase(UsuarioTemp)
    'Habiliata botões de navegação conforme a função do usuario logado
    ' Forms![Frm_MenuInicial]![Bt_Nav_1].enable = True
    ' Forms![Frm_MenuInicial]![Bt_Nav_2].enable = True
    ' Forms![Frm_MenuInicial]![Bt_Nav_3].enable = True

    'Função usuario logado Teste
    If NivelUsuario = 3 Then
    MsgBox "Acesso permitido", vbInformation, "Autenticação efetuada com sucesso"
    DoCmd.OpenForm "Frm_MenuInicial"
    'Coloca nome usuario logado no form
    Forms![Frm_MenuInicial]![Txt_Usuario_Atual] = UCase(UsuarioTemp)
    'Habiliata botões de navegação conforme a função do usuario logado
    ' Forms![Frm_MenuInicial]![Bt_Nav_1].enable = False
    ' Forms![Frm_MenuInicial]![Bt_Nav_2].enable = False
    ' Forms![Frm_MenuInicial]![Bt_Nav_3].enable = False

    End If
    End If
    End If
    End If
    End If

    End Sub

    'Private Sub Form_Load()
    ' DoCmd.ShowToolbar "Ribbon", acToolbarNo
    'End Sub


    Private Sub bt_close_Click()
    DoCmd.Quit
    End Sub

    Private Sub bt_CriarConta_Click()
    DoCmd.Close acForm, "Frm_Login"
    DoCmd.OpenForm "Frm_Novo_Usuario"
    End Sub

    Private Sub sl_ExibirSenha_AfterUpdate()
    ' exibir senha
    If sl_ExibirSenha = True Then
    txt_Senha.InputMask = ""
    Else
    txt_Senha.InputMask = "Senha_Usuario"
    End If






    Alguma ideia de como prosseguir?
    Obrigado.
    End Sub

    Anexos
    [Resolvido]Dificuldade com login e permissão AttachmentTesteLogin 01.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (92 Kb) Baixado 21 vez(es)
    Carvalho
    Carvalho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 245
    Registrado : 19/01/2013

    [Resolvido]Dificuldade com login e permissão Empty Re: [Resolvido]Dificuldade com login e permissão

    Mensagem  Carvalho 16/7/2023, 01:24

    Boa noite


    Sobre o problema em que os botões de comando não funcionam para os usuários "Teste 2" e "Teste 3", é importante verificar se esses usuários estão corretamente cadastrados na tabela "Tbl_Usuario" e se os campos "Nome_Usuario" e "Senha_Usuario" possuem os valores corretos. Verifique se não há erros de digitação ou espaços extras nos valores desses campos.
    Além disso, confirme se os valores dos campos "Nivel_Usuario" correspondem aos níveis corretos para os usuários "Teste 2" e "Teste 3". Certifique-se de que esses usuários tenham níveis diferentes de 1 e 2, para que o fluxo do código seja corretamente executado para esses casos.
    Mylton
    Mylton
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1012
    Registrado : 23/08/2010

    [Resolvido]Dificuldade com login e permissão Empty Re: [Resolvido]Dificuldade com login e permissão

    Mensagem  Mylton 16/7/2023, 14:57

    Bom dia
    Fiz a revisão sugerida e "distribui" melhor os If e else if.
    Acho que seria isso.

    Ficando assim.




    Private Sub Bt_Login_Click()

    Dim NivelUsuario As Integer 'Crio a variavel Nivel usuário
    Dim TempSenha As String 'Crio a variavel TempSenha que será a senha temporária dada ao novo usuário
    Dim ID As Integer 'Crio a variavel ID
    Dim UsuarioTemp As String 'Crio a variavel paara Usuário atual do form menu principal

    If IsNull(Me.txt_Usuario) Then
    MsgBox "Entre com nome do usuário.", vbInformation, "Nome do Usuário Necessário"
    Me.txt_Usuario.SetFocus

    ElseIf IsNull(Me.txt_Senha) Then
    MsgBox "Digite a senha.", vbInformation, "Senha Necessária"
    Me.txt_Senha.SetFocus
    Else
    ' Nome do usuario/Tbl Usuario, Tbl Usuario, Nome do usuario/Tabl Usuario /Nome campo usuario Form
    If (IsNull(DLookup("Nome_Usuario", "Tbl_Usuario", "Nome_Usuario='" & Me.txt_Usuario.Value & "'"))) Or _
    IsNull(DLookup("Senha_Usuario", "Tbl_Usuario", "Senha_Usuario='" & Me.txt_Senha.Value & "'")) Then
    ' Acima = Senha do usuario/Tbl Usuario, Tbl Usuario, Senha do usuario/Tabl Usuario /Nome campo senha do usuario Form
    MsgBox "Nome do usuário ou senha errados.", vbInformation, "Acesso negado"
    Me.txt_Usuario = ""
    Me.txt_Senha = ""
    Me.txt_Usuario.SetFocus

    Else
    'Uso a variavel NivelUsuario
    NivelUsuario = DLookup("[Nivel_Usuario]", "Tbl_Usuario", "Nome_Usuario='" & Me.txt_Usuario.Value & "'")
    'Uso a variavel TempSenha
    TempSenha = DLookup("[Senha_Usuario]", "Tbl_Usuario", "Nome_Usuario='" & Me.txt_Usuario.Value & "'")
    'Uso a variavel ID
    ID = DLookup("Id_Usuario", "Tbl_Usuario", "Nome_Usuario='" & Me.txt_Usuario.Value & "'")
    'Uso a variavel UsuárioTemp
    UsuarioTemp = Me.txt_Usuario

    If (TempSenha = "Senha_Usuario") Then
    DoCmd.OpenForm "Frm_Cad_Usuario", , , "[Id_Usuario]=" & ID
    Else
    If NivelUsuario = 1 Then 'Função usuario logado Administrador
    MsgBox "Acesso permitido", vbInformation, "Autenticação efetuada com sucesso"
    DoCmd.OpenForm "Frm_MenuInicial"
    Forms![Frm_MenuInicial]![Txt_Usuario_Atual] = UCase(UsuarioTemp)
    'Forms![Frm_MenuInicial]![Bt_Nav_1].enable = True
    'Forms![Frm_MenuInicial]![Bt_Nav_2].enable = True
    'Forms![Frm_MenuInicial]![Bt_Nav_3].enable = True

    'Função usuario logado usuário
    ElseIf NivelUsuario = 2 Then
    DoCmd.OpenForm "Frm_MenuInicial"
    'Coloca nome usuario logado no form
    Forms![Frm_MenuInicial]![Txt_Usuario_Atual] = UCase(UsuarioTemp)
    'Habiliata botões de navegação conforme a função do usuario logado
    'Forms![Frm_MenuInicial]![Bt_Nav_1].enable = True
    'Forms![Frm_MenuInicial]![Bt_Nav_2].enable = True
    'Forms![Frm_MenuInicial]![Bt_Nav_3].enable = True

    'Função usuario logado Teste
    If NivelUsuario = 3 Then
    MsgBox "Acesso permitido", vbInformation, "Autenticação efetuada com sucesso"
    DoCmd.OpenForm "Frm_MenuInicial"
    'Coloca nome usuario logado no form
    Forms![Frm_MenuInicial]![Txt_Usuario_Atual] = UCase(UsuarioTemp)
    'Habiliata botões de navegação conforme a função do usuario logado
    'Forms![Frm_MenuInicial]![Bt_Nav_1].enable = False
    'Forms![Frm_MenuInicial]![Bt_Nav_2].enable = False
    'Forms![Frm_MenuInicial]![Bt_Nav_3].enable = False
    End If
    End If

    End If
    End If
    End If

    End Sub



    MAs ainda do 2 em diante não vai.

    Mylton
    Mylton
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1012
    Registrado : 23/08/2010

    [Resolvido]Dificuldade com login e permissão Empty Re: [Resolvido]Dificuldade com login e permissão

    Mensagem  Mylton 16/7/2023, 14:57

    Perdeu a formatação.
    Snif

    Mylton
    Mylton
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1012
    Registrado : 23/08/2010

    [Resolvido]Dificuldade com login e permissão Empty Re: [Resolvido]Dificuldade com login e permissão

    Mensagem  Mylton 16/7/2023, 15:00

    Coloquei a formatação em pdf, uma vez que não sei como colocar aqui sem perder a formatação.
    Anexos
    [Resolvido]Dificuldade com login e permissão AttachmentPrivate Sub Bt.pdf
    Você não tem permissão para fazer download dos arquivos anexados.
    (73 Kb) Baixado 8 vez(es)
    Carvalho
    Carvalho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 245
    Registrado : 19/01/2013

    [Resolvido]Dificuldade com login e permissão Empty Re: [Resolvido]Dificuldade com login e permissão

    Mensagem  Carvalho 16/7/2023, 19:48

    Boa tarde Mylton,

    Ao analisar o código fornecido, vejo que há um problema na estrutura condicional. Você está verificando o valor de NivelUsuario dentro do bloco de código para o nível de usuário "Administrador". Isso faz com que a verificação para os níveis "Usuário" e "Teste" nunca seja executada.

    Para corrigir esse problema, você precisa reorganizar a estrutura condicional para que todos os níveis de usuário sejam verificados corretamente. Aqui está uma versão revisada do código, eu não testei.

    Com essa reorganização, cada nível de usuário será verificado separadamente e as ações corretas serão executadas com base no valor de NivelUsuario. Certifique-se de descomentar as linhas que habilitam e desabilitam os botões de navegação de acordo com as permissões de cada nível.

    Espero que isso resolva o problema!

    Código:

    Private Sub Bt_Login_Click()
        Dim NivelUsuario As Integer 'Crio a variavel Nivel usuário
        Dim TempSenha As String 'Crio a variavel TempSenha que será a senha temporária dada ao novo usuário
        Dim ID As Integer 'Crio a variavel ID
        Dim UsuarioTemp As String 'Crio a variavel paara Usuário atual do form menu principal
       
        If IsNull(Me.txt_Usuario) Then
            MsgBox "Entre com nome do usuário.", vbInformation, "Nome do Usuário Necessário"
            Me.txt_Usuario.SetFocus
        ElseIf IsNull(Me.txt_Senha) Then
            MsgBox "Digite a senha.", vbInformation, "Senha Necessária"
            Me.txt_Senha.SetFocus
        Else
            ' Nome do usuario/Tbl Usuario, Tbl Usuario, Nome do usuario/Tabl Usuario /Nome campo usuario Form
            If (IsNull(DLookup("Nome_Usuario", "Tbl_Usuario", "Nome_Usuario='" & Me.txt_Usuario.Value & "'"))) Or _
              IsNull(DLookup("Senha_Usuario", "Tbl_Usuario", "Senha_Usuario='" & Me.txt_Senha.Value & "'")) Then
                ' Acima = Senha do usuario/Tbl Usuario, Tbl Usuario, Senha do usuario/Tabl Usuario /Nome campo senha do usuario Form
                MsgBox "Nome do usuário ou senha errados.", vbInformation, "Acesso negado"
                Me.txt_Usuario = ""
                Me.txt_Senha = ""
                Me.txt_Usuario.SetFocus
            Else
                'Uso a variavel NivelUsuario
                NivelUsuario = DLookup("[Nivel_Usuario]", "Tbl_Usuario", "Nome_Usuario='" & Me.txt_Usuario.Value & "'")
                'Uso a variavel TempSenha
                TempSenha = DLookup("[Senha_Usuario]", "Tbl_Usuario", "Nome_Usuario='" & Me.txt_Usuario.Value & "'")
                'Uso a variavel ID
                ID = DLookup("Id_Usuario", "Tbl_Usuario", "Nome_Usuario='" & Me.txt_Usuario.Value & "'")
                'Uso a variavel UsuárioTemp
                UsuarioTemp = Me.txt_Usuario

                If (TempSenha = "Senha_Usuario") Then
                    DoCmd.OpenForm "Frm_Cad_Usuario", , , "[Id_Usuario]=" & ID
                ElseIf NivelUsuario = 1 Then 'Função usuario logado Administrador
                    MsgBox "Acesso permitido", vbInformation, "Autenticação efetuada com sucesso"
                    DoCmd.OpenForm "Frm_MenuInicial"
                    Forms![Frm_MenuInicial]![Txt_Usuario_Atual] = UCase(UsuarioTemp)
                    'Forms![Frm_MenuInicial]![Bt_Nav_1].Enabled = True
                    'Forms![Frm_MenuInicial]![Bt_Nav_2].Enabled = True
                    'Forms![Frm_MenuInicial]![Bt_Nav_3].Enabled = True
                ElseIf NivelUsuario = 2 Then 'Função usuario logado usuário
                    MsgBox "Acesso permitido", vbInformation, "Autenticação efetuada com sucesso"
                    DoCmd.OpenForm "Frm_MenuInicial"
                    Forms![Frm_MenuInicial]![Txt_Usuario_Atual] = UCase(UsuarioTemp)
                    'Forms![Frm_MenuInicial]![Bt_Nav_1].Enabled = True
                    'Forms![Frm_MenuInicial]![Bt_Nav_2].Enabled = True
                    'Forms![Frm_MenuInicial]![Bt_Nav_3].Enabled = True
                ElseIf NivelUsuario = 3 Then 'Função usuario logado Teste
                    MsgBox "Acesso permitido", vbInformation, "Autenticação efetuada com sucesso"
                    DoCmd.OpenForm "Frm_MenuInicial"
                    Forms![Frm_MenuInicial]![Txt_Usuario_Atual] = UCase(UsuarioTemp)
                    'Forms![Frm_MenuInicial]![Bt_Nav_1].Enabled = False
                    'Forms![Frm_MenuInicial]![Bt_Nav_2].Enabled = False
                    'Forms![Frm_MenuInicial]![Bt_Nav_3].Enabled = False
                End If
            End If
        End If
    End Sub


    Mylton
    Mylton
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1012
    Registrado : 23/08/2010

    [Resolvido]Dificuldade com login e permissão Empty Re: [Resolvido]Dificuldade com login e permissão

    Mensagem  Mylton 16/7/2023, 22:12

    Obrigado Gilberto.

    Funcionou.

    Boa semana.
    Mylton
    Mylton
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1012
    Registrado : 23/08/2010

    [Resolvido]Dificuldade com login e permissão Empty Re: [Resolvido]Dificuldade com login e permissão

    Mensagem  Mylton 16/7/2023, 22:25

    Tentei colocar o resolvido.
    Mas não está indo.
    Tentarei novamente depois.

    Boa semana a todos
    Mylton
    Mylton
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1012
    Registrado : 23/08/2010

    [Resolvido]Dificuldade com login e permissão Empty Re: [Resolvido]Dificuldade com login e permissão

    Mensagem  Mylton 16/7/2023, 23:37

    Resolvido

    Conteúdo patrocinado


    [Resolvido]Dificuldade com login e permissão Empty Re: [Resolvido]Dificuldade com login e permissão

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 6/5/2024, 13:27