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]Aviso somente no primeiro acesso

    avatar
    eristonmattos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 194
    Registrado : 05/09/2018

    [Resolvido]Aviso somente no primeiro acesso Empty [Resolvido]Aviso somente no primeiro acesso

    Mensagem  eristonmattos 3/5/2023, 19:47

    Boa tarde aos caros membros,

    Em um BD onde após a tela de login, abre um formulário secundário, nome "FPrincipal", onde o acesso aos
    3 tipos de usuários (Administrador, Gerente e Usuário) é possível, de acordo com o nível dado no formulário
    "FCadastroUsuario", cada nível tem seu Menu específico, MenuAdmin1, MenuGerente e MenuUsuario.
    Os caros membros, conhecem esse tipo de login de acesso, o que usa o método de classe HashMD5.

    Cada tipo de usuário tem um aviso, AvisoAdmin, Aviso2 e Aviso3 (ignorem o Aviso1)

    Minha questão é uma forma de abrir esses avisos, uma única vez, quando esses 3 tipos de usuários, acessassem
    o BD, cada aviso específico de acordo com o nível do usuário.

    Consigo colocar somente um único aviso no evento ao abrir do formulário "FPrincipal", quando é usada a senha
    padrão (123456), que abre o formulário "FAlterarSenha", mas queria que fosse ao abrir os formulários
    MenuAdmin1, MenuGerente e MenuUsuario.

    Não é possível ter uma caixa de seleção nesse formulários de aviso, tipo: "Não mostrar novamente" e o formulário
    não abrir mais no próximo acesso??

    Eis o link: dropbox.com/s/cwmlmffidwekias/ModeloDoc.accdb?dl=0

    As senhas de acesso para os 3 tipos de usuários é: M9nb8b*9 (pode ser alterada para senha padrão, se quiserem testar).

    Desde já, agradeço a todos.
    avatar
    Canastra
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 04/10/2018

    [Resolvido]Aviso somente no primeiro acesso Empty Re: [Resolvido]Aviso somente no primeiro acesso

    Mensagem  Canastra 4/5/2023, 09:25

    Tentei baixar o arquivo, mas não consegui.

    O site retorna a informação de que o link foi excluído.

    De qualquer forma, tente o seguinte:

    Adicione um campo à tabela do banco de dados para armazenar o status de exibição da notificação para cada tipo de usuário. Quando um usuário efetuar o login, o sistema verifica se uma notificação já foi exibida para esse usuário e, caso contrário, exibe uma notificação específica do tipo de usuário.
    Quando o usuário marca a caixa "Não mostrar novamente", o sistema atualiza o valor do campo na tabela para indicar que o aviso já foi exibido e não precisa ser exibido novamente.

    Para implementar isso, adicione um VBA ao formulário de notificação e ao formulário de login para verificar e atualizar o status da notificação. Assim:

    No Form “login”:

    1. Verifique o tipo de login do usuário;
    2. Verifique se um aviso já foi exibido para este tipo de usuário; e
    3. Mostrar, no formulário de notificação correspondente se a notificação ainda não estiver exibida.

    No Form “aviso”:

    1. Verifique o status do alerta para este tipo de usuário
    2. Feche o formulário de alerta se o alerta já estiver exibido.
    3. Mostrar o formulário de notificação se a notificação ainda não estiver exibida
    4. Quando o usuário marca a caixa de seleção "Não me mostre novamente", atualizamos o status do alerta nessa tabela.

    Isso deve permitir que você mostre avisos apenas uma vez por tipo de usuário e permitir que os usuários optem por não mostrá-los novamente.

    VBAs:

    No Form "Login"

    Código:

    Private Sub Form_Open(Cancel As Integer)
        Dim User As String
        User = DLookup("User", "tblUsuarios", "Usuario='" & Me.txtUsuario & "' AND senha='" & Me.txtSenha & "'")
        
        Dim avisoOK As Boolean
        avisoOK = DLookup("avisoOK", "tblAvisos", "User='" & User & "'")
        
        If Not avisoOK Then
            If User = "Administrador" Then
                DoCmd.OpenForm "avisoAdministrador", acNormal
            ElseIf User = "Gerente" Then
                DoCmd.OpenForm "avisoGerente", acNormal
            ElseIf User = "Usuário" Then
                DoCmd.OpenForm "avisoUsuario", acNormal
            End If
        End If
    End Sub



    No Form "Avisos"

    Código:

    Private Sub Form_Open(Cancel As Integer)
        Dim User As String
        User = DLookup("User", "tblUsuarios", "Usuario='" & Forms!login!txtUsuario & "' AND senha='" & Forms!login!txtSenha & "'")
        
        Dim alertaOK As Boolean
        alertaOK = DLookup("alertaOK", "tblAvisos", "User='" & User & "'")
        
        If alertaOK Then
            DoCmd.Close acForm, Me.Name, acSaveNo
        Else
            DoCmd.OpenForm "notice" & User, acNormal
        End If
    End Sub

    Private Sub chkNaoMostrarNovamente_Click()
        Dim User As String
        User = DLookup("User", "tblUsuarios", "Usuario='" & Forms!login!txtUsuario & "' AND senha='" & Forms!login!txtSenha & "'")
        
        Dim sql As String
        sql = "UPDATE tblAvisos SET alertaOK=True WHERE User='" & User & "'"
        CurrentDb.Execute sql
        
        Me.chkNaoMostrarNovamente.Value = True
    End Sub


    Se puder mostrar o BD, será mais fácil entender e te ajudar!
    avatar
    eristonmattos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 194
    Registrado : 05/09/2018

    [Resolvido]Aviso somente no primeiro acesso Empty Aviso somente no primeiro acesso

    Mensagem  eristonmattos 4/5/2023, 14:31

    Bom dia, @Canastra,

    De fato, depois que eu fiz o upload do BD no site, eu
    apaguei alguns arquivos antigos pra desocupar espaço,
    vi agora que apaguei o tal, depois de tê-lo enviado.

    Coloquei de volta, deixando somente os 3 forms de aviso
    que são a questão aqui.

    dropbox.com/s/wzpzqp0iqzfp9kc/ModeloDoc.accdb?dl=0

    Consegui entender o que vc diz sobre "adicionar um campo à tabela", mas logo depois
    quando vi o código com tblAvisos, ficou meio complicado de entender.
    Eu não uso tabela para os avisos, são somente um form com a mensagem toda em
    um Rótulo somente.

    Minha maior dificuldade confesso, é que como a forma de login que uso é com esse
    módulo de classe HashMD5, que gera senha criptografada e tal, fico na dúvida de
    como alterar campos na tabela "Usuario" e ele não funcionar como está, com a senha
    padrão, que abre um form de alteração com senha (maiúscula, minúscula, nº e símbolo),
    enfim fera, dá uma olhada no BD e me diz se é do jeito que vc explicou.

    Att,
    avatar
    Canastra
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 04/10/2018

    [Resolvido]Aviso somente no primeiro acesso Empty Re: [Resolvido]Aviso somente no primeiro acesso

    Mensagem  Canastra 4/5/2023, 23:02

    @eristonmattos

    Consegui baixar o arquivo.

    Verificarei, e informo assim que possível!

    Percebi que estava grande, 130Mb!

    Sugiro, para evitar lentidão e instabilidade, sempre compactar e reparar o BD.

    Fiz, e ficou com 11mb!
    avatar
    Canastra
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 04/10/2018

    [Resolvido]Aviso somente no primeiro acesso Empty Re: [Resolvido]Aviso somente no primeiro acesso

    Mensagem  Canastra 6/5/2023, 07:49

    Fiz uma gambiarra, veja se você consegue entender!

    Usuario/Senha:

    Admin/Admin
    Gestor/Gestor
    Outros/Outros


    Se conseguir resolver, não esqueça de marcar como "Resolvido".

    Abçs,
    Anexos
    [Resolvido]Aviso somente no primeiro acesso AttachmentAVISOS.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (37 Kb) Baixado 14 vez(es)
    avatar
    eristonmattos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 194
    Registrado : 05/09/2018

    [Resolvido]Aviso somente no primeiro acesso Empty Aviso somente no primeiro acesso

    Mensagem  eristonmattos 6/5/2023, 18:09

    Boa tarde, @Canastra,

    Infelizmente não vai ser possível usar essa forma que vc implementou, fera.

    O método de login atual precisa ser esse, pq é seguro, pq demorei a deixá-lo
    funcional e interativo e pq tem muitos outros forms que dependem da forma
    de login pra funcionar.

    Ainda acho que é possível com essa forma de login, enfim.

    Fico-lhe agradecido, obviamente.

    Att,

    Canastra gosta desta mensagem

    avatar
    eristonmattos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 194
    Registrado : 05/09/2018

    [Resolvido]Aviso somente no primeiro acesso Empty Aviso somente no primeiro acesso

    Mensagem  eristonmattos 7/5/2023, 14:46

    Bom dia @Canastra e caros membros,

    a título de informação, consegui resolver a questão e claro, vou compartilhar aqui,
    pq esse tipo de form de login para Sistema é bem intuitivo e profissional, não lembro
    onde consegui o BD original, mas enfim.

    no FPrincipal, no evento ao abrir, é só alterar o que está para:

    Código:
    DoCmd.Maximize
      If verificaLogin(getUsuarioAtual, getSenhaPadrao) And getGrupoUsuarioAtual = "Administradores" Then
        MsgBox "Por favor, altere sua senha antes de continuar.", _
                vbInformation, "Senha Padrão"
        DoCmd.OpenForm "Frm_Aviso1"
        DoCmd.OpenForm "FAlterarSenha"
      ElseIf verificaLogin(getUsuarioAtual, getSenhaPadrao) And getGrupoUsuarioAtual = "Gerentes" Then
        MsgBox "Por favor, altere sua senha antes de continuar.", _
                vbInformation, "Senha Padrão"
        DoCmd.OpenForm "Frm_Aviso2"
        DoCmd.OpenForm "FAlterarSenha"
      Else: MsgBox "Por favor, altere sua senha antes de continuar." _
                , vbInformation, "Senha Padrão"
        DoCmd.OpenForm "Frm_Aviso3"
        DoCmd.OpenForm "FAlterarSenha"
      
      End If
      
      'If verificaLogin(getUsuarioAtual, getSenhaPadrao) Then
        'MsgBox "Por favor, altere sua senha antes de continuar.", _
                'vbInformation, "Senha Padrão"
        'DoCmd.OpenForm "FAlterarSenha"
      'End If
      
    End Sub

    Veja, que deixei o original como comentário, só inclui o grupo de usuários por tipo ao If.
    Dessa forma, o formulário de alterar Senha e o formulário de Aviso, só aparecem quando
    cada tipo de usuário acessa o BD pela primeira vez, com sua senha padrão.

    Deixei o FPrincipal e o FAlterarSenha como janela restrita "Não" e o form Aviso, "Sim",
    mesmo assim ele abre atrás do FAlterarSenha, mas é só colocar um rótulo chamando
    atenção para o form a seguir e pronto, o que importa é que está funcionando.

    Veja que os botões e suas caixas deslizantes, têm ferramentas dos meus BDs (não inclusas no anexo),
    mas acho práticas, pq é bom o usuário poder ter à mão tudo que tem de possível, sem sair do BD
    para acessar, então, quanto mais ferramentas de uso dentro do sistema tiver, mais funcional ele é, acho
    eu. Para quem gosta de um Menu interativo como esse, com ícones, utilitários e a melhor forma de
    segurança possível, fique á vontade, baixe e implemente como quiser.

    Desde já, novamente agradeço sua ajuda, fera.

    Att,

    Canastra gosta desta mensagem


    Conteúdo patrocinado


    [Resolvido]Aviso somente no primeiro acesso Empty Re: [Resolvido]Aviso somente no primeiro acesso

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 06:12