MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas, Exemplos e Codigos VBA

    [Resolvido]Executar macro conforme nível de login

    Compartilhe

    rricardo.mendonca
    Novato
    Novato

    Localização:
    Mensagens: 3
    Registrado: 19/05/2011

    [Resolvido]Executar macro conforme nível de login

    Mensagem  rricardo.mendonca em 19/5/2011, 01:29

    Tenho pouca experiência em VBA e preciso da seguinte ajuda.

    Na tabela tbl_Usuarios possui os campos IdUser, Nome, Senha, Nivel. No formulário de login o usuário seleciona seu nome e insere a senha, posteriormente validação, abre formulário principal. Neste momento gostaria que a macro com mesmo valor do campo nivel.

    Ex: o iduser: 1 nome: teste senha: teste nivel: adm , com isso abriria a macro chamada adm.

    O objetivo é em cada macro ocultar os botões não necessários para os diferentes niveis. Esta foi a maneira que encontrei para não permitir ações de alguns usuários com perfil diferentes já que os usuário ficam logados ao mesmo tempo.

    Segue abaixo o código que consegui chegar pesquisando na NET sem conhecer VBA.

    Private Sub bnt_OK_Click()
    Dim wSenha As String
    If IsNull(cmbUser) Then
    MsgBox "Selecione um Usuário na Lista", vbCritical, "Acesso Negado"
    cmbUser.SetFocus
    ElseIf IsNull(txtPass) Then
    MsgBox "Entre com a Senha", vbCritical, "Acesso Negado"
    txtPass.SetFocus
    Else
    wSenha = DLookup("[Senha]", "Tbl_Usuarios", "[IDUser] = " & Val(cmbUser))
    If txtPass = wSenha Then
    Dim rsInf As Recordset
    Set rsInf = Nothing
    DoCmd.Close acForm, "Frm_Login"
    If Not EstaCarregado("Frm_Principal") Then
    DoCmd.OpenForm "Frm_Principal"
    End If
    Else
    MsgBox "Senha Incorreta", vbCritical, "Acesso Negado"
    txtPass = Null
    txtPass.SetFocus
    End If
    End If
    End Sub

    Desde já agradeço ajuda


    Última edição por rricardo.mendonca em 20/5/2011, 16:46, editado 1 vez(es)

    Harysohn
    Moderador
    Moderador

    Localização:
    Mensagens: 5074
    Registrado: 01/03/2011

    Re: [Resolvido]Executar macro conforme nível de login

    Mensagem  Harysohn em 19/5/2011, 01:43

    Ricardo veja este exemplo da sala de repositorios...
    Nele há niveis de usuários ativando ou desativando botões no form.. tudo em VBA...

    Veja se lhe serve..

    Saudações

    [Você precisa estar registrado e conectado para ver este link.]


    .................................................................................
    Harysohn Pina (Piloto)
    الله أكبر Paz, Justiça e Liberdade! الله أكبر
    [Você precisa estar registrado e conectado para ver este link.]


    Iniciando no Access? Então veja esse [Você precisa estar registrado e conectado para ver este link.] e também [Você precisa estar registrado e conectado para ver este link.]


    Quando tua dúvida for RESOLVIDA, dê retorno com AGRADECIMENTO a aqueles que gastaram seu tempo em te ajudar.
    Clique no botão Resolvido logo acima do botão Enviar, do lado direito. Todos nós agradecemos.
    [Você precisa estar registrado e conectado para ver esta imagem.]

    rricardo.mendonca
    Novato
    Novato

    Localização:
    Mensagens: 3
    Registrado: 19/05/2011

    Re: [Resolvido]Executar macro conforme nível de login

    Mensagem  rricardo.mendonca em 19/5/2011, 01:48

    Boa noite Harysohn

    Já estou estudando o código alguns dias, mas não tenho conhecimento para implementar em meu BD. Pensei em algo mais simples devido esta minha deficiência em VBA.

    Continuarei estudando para chegar no objetivo.

    Obrigado

    Harysohn
    Moderador
    Moderador

    Localização:
    Mensagens: 5074
    Registrado: 01/03/2011

    Re: [Resolvido]Executar macro conforme nível de login

    Mensagem  Harysohn em 19/5/2011, 02:03

    Ok.. este exemplo creio que va lhe servir.. ele esta completo para o login que necessita..
    estude.. afinal e assim que aprendemos..

    Boa noite e bom trabalho...
    Caso o exemplo sirva nao esqueca o resolvido no topico
    ate..


    .................................................................................
    Harysohn Pina (Piloto)
    الله أكبر Paz, Justiça e Liberdade! الله أكبر
    [Você precisa estar registrado e conectado para ver este link.]


    Iniciando no Access? Então veja esse [Você precisa estar registrado e conectado para ver este link.] e também [Você precisa estar registrado e conectado para ver este link.]


    Quando tua dúvida for RESOLVIDA, dê retorno com AGRADECIMENTO a aqueles que gastaram seu tempo em te ajudar.
    Clique no botão Resolvido logo acima do botão Enviar, do lado direito. Todos nós agradecemos.
    [Você precisa estar registrado e conectado para ver esta imagem.]

    rricardo.mendonca
    Novato
    Novato

    Localização:
    Mensagens: 3
    Registrado: 19/05/2011

    Re: [Resolvido]Executar macro conforme nível de login

    Mensagem  rricardo.mendonca em 20/5/2011, 16:44

    Boa tarde!

    Após penar devido não conhecer VBA, mas com alguns exemplos o código ficou assim:

    Private Sub bnt_OK_Click()
    Dim wSenha As String
    Dim wNivel As String
    If IsNull(cmbUser) Then
    MsgBox "Selecione um Usuário na Lista", vbCritical, "Acesso Negado"
    cmbUser.SetFocus
    ElseIf IsNull(txtPass) Then
    MsgBox "Entre com a Senha", vbCritical, "Acesso Negado"
    txtPass.SetFocus
    Else
    wSenha = DLookup("[Senha]", "Tbl_Usuarios", "[IDUser] = " & Val(cmbUser))
    wNivel = DLookup("[Nivel]", "Tbl_Usuarios", "[IDUser] = " & Val(cmbUser))
    If txtPass = wSenha Then
    'Guarda o id e nivel do Usuário Atual
    Dim rsInf As Recordset
    Set rsInf = Nothing
    If wNivel = "1" Then
    MsgBox "Acesso Liberado", vbInformation, "BlisFarma"
    DoCmd.Close acForm, "Frm_Login"
    DoCmd.OpenForm "Clientes1"
    ElseIf wNivel = "2" Then
    MsgBox "Acesso Liberado", vbInformation, "BlisFarma"
    DoCmd.Close acForm, "Frm_Login"
    DoCmd.OpenForm "Apontamento1"
    End If

    Else
    MsgBox "Senha Incorreta", vbCritical, "Acesso Negado"
    txtPass = Null
    txtPass.SetFocus
    End If
    End If
    End Sub

    Desta forma de acordo com Nivel de usuário abrirá um formulário diferente. Posteriormente vou alterar para abrir macro, e na macro definirei os campos que serão visiveis ou não no formulário. Assim, criarei apenas 1 formulário principal.

    Sei que poderia acrescentar usuário e senha direto no VBA e definiria ação individual, mas como não sou eu que irá operacionalizar achei complicado inserir novos usuários.

    Grato

    Harysohn
    Moderador
    Moderador

    Localização:
    Mensagens: 5074
    Registrado: 01/03/2011

    Re: [Resolvido]Executar macro conforme nível de login

    Mensagem  Harysohn em 20/5/2011, 18:25

    O Fórum agradece o retorno..


    .................................................................................
    Harysohn Pina (Piloto)
    الله أكبر Paz, Justiça e Liberdade! الله أكبر
    [Você precisa estar registrado e conectado para ver este link.]


    Iniciando no Access? Então veja esse [Você precisa estar registrado e conectado para ver este link.] e também [Você precisa estar registrado e conectado para ver este link.]


    Quando tua dúvida for RESOLVIDA, dê retorno com AGRADECIMENTO a aqueles que gastaram seu tempo em te ajudar.
    Clique no botão Resolvido logo acima do botão Enviar, do lado direito. Todos nós agradecemos.
    [Você precisa estar registrado e conectado para ver esta imagem.]

      Data/hora atual: 21/5/2012, 13:04