MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Permissão de Acesso

    Compartilhe

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 25/05/2015

    Permissão de Acesso

    Mensagem  Maurício Bruno em 16/5/2018, 14:45

    Bom Dia!

    Queria ajuda para colocar outros nível de permissão.
    O código abaixo verifica Usuário e o seu grupo de acesso, porém, gostaria de habilitar por módulo, tenho administrador que vai entrar somente em um módulo especifico e não em todos.

    Agora a minha tabela de cadastro de usuário está assim:

    |          CPF          |   NOME   |    USER REDE    | GRUPO DE ACESSO | MÓDULO 01 | MÓDULO 02| MÓDULO 03 |
    | 000.000.000-00 | CICLANO | CICLANO.SILVA |  ADMINISTRADOR  |.......|X|........|.......|X|.......|......|X|........|
    | 100.000.000-01 |   TESTE   |  TESTE.SOUSA  |  ADMINISTRADOR  |.......|..|........|.......|..|.......|......|X|........|

    Criei o nAcesso porém não funcionou. Estou sem direção.

    Código:
    'AO CLICAR NO BOTÃO EXCLUIR
    Private Sub btn_excluir_Click()
    'ATUALIZAR O GRUPO DE ACESSO E O USUÁRIO
    Dim sUsuario, nUsuario As String
    Dim sGrupoUsuario As String
    Dim nAcesso As String

    sUsuario = Forms!Frm_Cadastro_Prestador!txtUser
    nUsuario = Nz(DLookup("[Usuário]", "Tbl_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    sGrupoUsuario = Nz(DLookup("[Grupo de Acesso]", "Tbl_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    Me.txt_Grupo_Usuario = sGrupoUsuario
    Me.txt_Usuario = nUsuario
    nAcesso = Nz(DLookup("[Grupo de Acesso]", "Tbl_GERAL_Cadastro_User", "[Treinamento]= '" & True & "'"), "")


    'AO ABRIR VERIFICA NÍVEL DE ACESSO
    If sGrupoUsuario = "ADMINISTRADOR"   & nAcesso = -1 Then
    ElseIf sGrupoUsuario = "DESENVOLVEDOR"  & nAcesso = -1 Then

        If MsgBox("Deseja excluir?", vbYesNo + vbQuestion, "Atenção!") = vbYes Then
        DoCmd.SetWarnings False
        DoCmd.RunCommand acCmdDeleteRecord
        DoCmd.SetWarnings True

    Conto a ajuda e desde já agradeço a atenção e ajuda.
    avatar
    CassioFabre
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 18/01/2013

    Re: Permissão de Acesso

    Mensagem  CassioFabre em 16/5/2018, 18:51

    Boa tarde,

    Para voce verificar se o usuário tem permissão para ação no módulo atual voce pode usar simplesmente um recordset. Coloque este código num botão só para voce testar:
    Código:
    Dim rs as recordset
    Dim sUsuario as string

    sUsuario = Forms!Frm_Cadastro_Prestador!txtUser
    set rs = currentdb.openrecordset("SELECT * FROM Tbl_Cadastro_User WHERE [USER REDE] = '" & sUsuario & "'")

    dim str as string
    str = "As permissões do usuário " & sUsuario & " em cada módulo são:" & vbcrlf & vbclrf

    str = str & "Módulo 01: " & rs![MÓDULO 01] & vbcrlf
    str = str & "Módulo 02: " & rs![MÓDULO 02] & vbcrlf
    str = str & "Módulo 03: " & rs![MÓDULO 03] & vbcrlf

    msgbox str, vbInformation, "Permissão"

    Tendo isso voce conseguirá implementar para a verificação do seu caso.

    Abraço.


    .................................................................................
    Só não tem código pra morte!

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 25/05/2015

    Re: Permissão de Acesso

    Mensagem  Maurício Bruno em 18/6/2018, 18:28

    CassioFabre,

    Mestre, desculpe a demora em testar, estava fechando outro projeto.

    Não consegui trabalhar no seu código.rsrs

    A última permissão esta acessando o formulário, mesmo eu desativando no cadastro do usuário, creio que estou colocando algo errado.

    Código:
    Private Sub Form_Load()
    'AO CARREGAR OCULTA AS RIBBONS
    DoCmd.ShowToolbar "Ribbon", acToolbarNo

    'ATUALIZAR O GRUPO DE ACESSO E O USUÁRIO
    Dim sUsuario, nUsuario As String
    Dim sGrupoUsuario As String
    Dim nPermissao1, nPermissao2, nPermissao3, nAtivo As String
    sUsuario = Forms!Frm_DESENV_Menu_Desenvolvedor!txtUser
    nUsuario = Nz(DLookup("[Usuário]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    sGrupoUsuario = Nz(DLookup("[Grupo de Acesso]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    Me.txt_Grupo_Usuario = sGrupoUsuario
    Me.txt_Usuario = nUsuario
    nPermissao1 = Nz(DLookup("[Prestador de Serviço]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    nPermissao2 = Nz(DLookup("[IRM]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    nPermissao3 = Nz(DLookup("[Treinamento]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    nAtivo = Nz(DLookup("[Ativado]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))

    'AO ABRIR VERIFICA NÍVEL DE ACESSO
    If sGrupoUsuario = "ADMINISTRADOR" And nAtivo = -1 _
                            And nPermissao1 = -1 _
                            Or nPermissao2 = 0 _
                            Or nPermissao3 = 0 _
        Or sGrupoUsuario = "CONSULTA" & nAtivo = True _
                            And nPermissao1 = True _
                            Or nPermissao2 = True _
                            Or nPermissao3 = True _
    Then
            Call menu_Prestador_Serviços_Click
           
    ElseIf sGrupoUsuario = "RECURSOS HUMANOS" _
        Or sGrupoUsuario = "AGENDAMENTO" _
        Or sGrupoUsuario = "CONSULTA" _
        Then
            Call menu_Treinamento_Click

    ElseIf sGrupoUsuario = "DESENVOLVEDOR" And nAtivo = -1 _
                            And nPermissao1 = True _
                            Or nPermissao2 = True _
                            Or nPermissao3 = True _
    Then
        DoCmd.OpenForm "Frm_DESENV_Menu_Desenvolvedor", acNormal, "", "", , acNormal
        DoCmd.Maximize
        DoCmd.OpenForm "Frm_DESENV_Saudação", acNormal
        Forms.Frm_DESENV_Saudação.btn_fechar.SetFocus

    Else
    MsgBox "ACESSO NEGADO" & vbNewLine & _
        "" & vbNewLine & _
        "Você não possui autorização para acessar a Ferramenta." & vbNewLine & _
        "" & vbNewLine & _
        "Por favor, entre em contato com Administrador.", _
          vbExclamation, "Acesso Negado"
        Form.Undo
        DoCmd.Quit
    End If

    End Sub

    Desde já agradeço a ajuda e atenção

      Data/hora atual: 16/8/2018, 16:32