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


4 participantes

    [Resolvido]Registros em Formulário com filtro por Usuário

    avatar
    Chamon Consultoria
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 266
    Registrado : 31/08/2012

    [Resolvido]Registros em Formulário com filtro por Usuário Empty [Resolvido]Registros em Formulário com filtro por Usuário

    Mensagem  Chamon Consultoria 16/10/2014, 17:01

    Olá amigos!

    Bd em Access 2007:

    -Possui um formulário de login (por nível de usuário) e um formulário "Vendas".
    -Trabalha em rede e está dividido em front/back end.

    Acontece que diversos usuários (cada um com seu login) criam registros de vendas.

    Existe uma maneira para que cada usuário consiga visualizar ou editar apenas os registros que foram feitos por ele próprio e apenas o Usuário Master tenha acesso a todos os registros?

    Desde já agradeço!
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Registros em Formulário com filtro por Usuário

    Mensagem  good guy 16/10/2014, 17:56

    Olá Chamon,

    Se vc impor esta condição ao logar, isso será possível dessa forma:

    Código:
    Public Sub Login_AfterUpdate()

    Dim nCod As Long

    nCod = DLookup("CodigoUsuario","Tbl_Vendas","Usuario = Forms!FrmSenha!Login ")

    If Not IsNull(Login) And Forms!FrmSenha!Login = Dlookup("Usuario","SuaTabelaLogin","CodUsuario = " & nCod) Then 

    DoCmd.OpenForm "frmVendas", acNormal

    End If

    End Sub


    'No formulário de Vendas(frmVendas) no evento Form_Open:

    Public Sub Form_Open ()

    Dim nCod As Long

    nCod = DLookup("CodigoUsuario","Tbl_Vendas","Usuario = Forms!FrmSenha!Login ")


    me.RecordSource = "SELECT * FROM Tbl_Vendas WHERE CodUsuario = " & nCod

    DoCmd.Close acForm, "FrmSenha", acSaveYes

    End Sub
    avatar
    Chamon Consultoria
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 266
    Registrado : 31/08/2012

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Re: [Resolvido]Registros em Formulário com filtro por Usuário

    Mensagem  Chamon Consultoria 16/10/2014, 20:37

    good guy, obrigado pela sugestão, mas não entendi muito bem a condição. Vou detalhar melhor os dados do Bd:

    -Tbl_Usuarios - com os seguintes campos: IDUser; Nome; Senha; Nivel.

    -Tbl_Vendas

    -Frm_Login

    -Frm_Vendas


    De acordo com esses dados vc poderia de ajudar a conciliar cada campo com seu código? Caso possa explica-lo também será muito útil.

    Obrigado!
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Registros em Formulário com filtro por Usuário

    Mensagem  good guy 17/10/2014, 14:16

    Olá Chamon,

    Posta um demo do seu sistema para executarmos alguns testes.
    avatar
    Chamon Consultoria
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 266
    Registrado : 31/08/2012

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Re: [Resolvido]Registros em Formulário com filtro por Usuário

    Mensagem  Chamon Consultoria 20/10/2014, 14:11

    good guy, bom dia!

    Segue anexo demo para testes.

    Usuário: ADM - Senha 123
    Usuário: User 01 - Senha 123
    Usuário: User 2 - Senha 123

    Obrigado!
    Anexos
    [Resolvido]Registros em Formulário com filtro por Usuário AttachmentDemo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.4 Mb) Baixado 37 vez(es)
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Registros em Formulário com filtro por Usuário

    Mensagem  good guy 20/10/2014, 18:20

    Olá Chamon,

    Fiz uns testes aqui e funcionou dessa maneira:

    Código:
    Private Sub bnt_cancela_Click()
        If EstaCarregado("Frm_Vendas") Then
            DoCmd.Close acForm, "Frm_Login"
        Else
            Application.Quit
        End If
    End Sub

    Private Sub bnt_OK_Click()
    Dim nIDUser As Integer
    nIDUser = DLookup("[iduser]", "Tbl_Conf")
                
        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] = " & nIDUser)
            If txtPass = wSenha Then
                'Guarda o id e nivel do Usuário Atual
                Dim rsInf As Recordset
                Set rsInf = CurrentDb.OpenRecordset("Tbl_Conf")
                rsInf.Edit
                rsInf!IDUser = cmbUser
                rsInf!idnivel = DLookup("[Nivel]", "Tbl_Usuarios", "[IDUser] = " & nIDUser)
                rsInf.Update
                Set rsInf = Nothing
                
                Dim sUsuario As String
                sUsuario = cmbUser.Column(1)
                If DLookup("[Nome]", "Tbl_Usuarios", "[IDUser] = " & nIDUser) = sUsuario Then
                  If DLookup("Nivel", "Tbl_Usuarios", "IDUser = " & nIDUser) = 1 Then
                  DoCmd.OpenForm "Frm_Vendas", acNormal, , "Nome_Usuario = '" & sUsuario & "'", acFormEdit  'Nível ADMINISTRADOR
                  DoCmd.Close acForm, "Frm_Login"
                  
                  ElseIf DLookup("Nivel", "Tbl_Usuarios", "IDUser = " & nIDUser) = 2 Then
                  DoCmd.OpenForm "Frm_Vendas", acNormal, , "Nome_Usuario = '" & sUsuario & "'", acFormAdd   'Nível OPERAÇÃO
                  DoCmd.Close acForm, "Frm_Login"
                  
                  ElseIf DLookup("Nivel", "Tbl_Usuarios", "IDUser = " & nIDUser) = 3 Then
                  DoCmd.OpenForm "Frm_Vendas", acNormal, , "Nome_Usuario = '" & sUsuario & "'", acFormReadOnly   'Nível CONSULTAS
                  DoCmd.Close acForm, "Frm_Login"
                  
                  ElseIf DLookup("Nivel", "Tbl_Usuarios", "IDUser = " & nIDUser) = 4 Then
                  DoCmd.OpenForm "Frm_Vendas", acNormal, , "Nome_Usuario = '" & sUsuario & "'", acFormReadOnly   'Nível PROCESSOS (?)
                  DoCmd.Close acForm, "Frm_Login"
                
                  ElseIf DLookup("Nivel", "Tbl_Usuarios", "IDUser = " & nIDUser) = 5 Then
                  DoCmd.OpenForm "Frm_Vendas", acNormal, , "Nome_Usuario = '" & sUsuario & "'", acFormReadOnly   'Nível PAGAMENTOS (?)
                  DoCmd.Close acForm, "Frm_Login"
                  Else
                  Exit Sub
                 End If
                End If
                
            Else
                MsgBox "Senha Incorreta", vbCritical, "Acesso Negado"
                txtPass = Null
                txtPass.SetFocus
            End If
        End If
    End Sub
    Anexos
    [Resolvido]Registros em Formulário com filtro por Usuário AttachmentDemo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (575 Kb) Baixado 35 vez(es)
    avatar
    Chamon Consultoria
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 266
    Registrado : 31/08/2012

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Re: [Resolvido]Registros em Formulário com filtro por Usuário

    Mensagem  Chamon Consultoria 23/10/2014, 02:11

    good guy, boa noite!

    Baixei o bd com sua atualização e fiz alguns testes.
    Fiz cadastros utilizando os usuários ADM, User 01 e User 2.
    Conclui que:

    Ao inserir novos registros no Frm_Vendas e este permanecer aberto, o usuário atual consegue acessar todos os registros apenas por ele inseridos nessa edição, ou seja, sem que seja fechado o Frm_Vendas. Uma vez fechado e quando esse formulário é novamente aberto, nenhum dos usuários consegue acessar os registros por eles inseridos, inclusive o usuário ADM (Master) que deveria ter acesso a qualquer registro, de qualquer usuário.
    O que pode estar acontecendo?

    Observação: Fiz os testes apenas no bd demo que você postou atualizado.

    Mais uma vez agradeço pela atenção.
    rubenscouto
    rubenscouto
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 02/10/2011

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Re: [Resolvido]Registros em Formulário com filtro por Usuário

    Mensagem  rubenscouto 23/10/2014, 05:22

    Crie um campo chamado IdUsuario na tabela de Vendas;
    na tela de login, logo após o reconhecimento do usuário logado, crie uma variável Temporaria chamado "TempVars!IdUsuario" e atribua o valor do usuário da tela de login a esta variável;
    na tela de vendas, atribua como valor padrão deste campo o valor da variável Tempvars!IdUsuario e deixe este campo como inabilitado para evitar alterações indevidas.
    Crie uma consulta da tela de vendas assim:

    SELECT Tbl_Vendas.*
    FROM Tbl_Vendas
    WHERE IIf(Tempvars!IdUsuario=1, IdUsuario>0, IdUsuario=Tempvars!IdUsuario));
    Caso a variável TempVars!IdUsuario reconheça o usuário logado, neste tela só aparecerá os registros do usuário logado, ou se o usuário for o ADM, aparecerá todos os registros. apesar de algumas pestanadas, consegui fazer isto em um projeto que desenvolvi aqui no meu trabalho.


    avatar
    Chamon Consultoria
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 266
    Registrado : 31/08/2012

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Re: [Resolvido]Registros em Formulário com filtro por Usuário

    Mensagem  Chamon Consultoria 23/10/2014, 15:15

    Rubenscouto, obrigado pela ajuda, mas não consegui fazer os procedimentos que vc sugeriu.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Registros em Formulário com filtro por Usuário

    Mensagem  good guy 23/10/2014, 15:52

    Olá Chamon,

    Vamos por partes,

    (1) o filtro por usuário está funcionando?
    (2) a edição só permitida pelo ADM não está funcionando? Verifique na tbl_Conf o código do adm, nesta tabela deve existir os demais códigos que configurarão os níveis de permissão adequados para os usuários.
    rubenscouto
    rubenscouto
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 02/10/2011

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Re: [Resolvido]Registros em Formulário com filtro por Usuário

    Mensagem  rubenscouto 24/10/2014, 16:27

    veja. dentro da pasta zipada tem os usuarios e as senhas. faça os testes e veja que há uma limitação de visualização de registros quando o usuário logado não é o administrador.
    Anexos
    [Resolvido]Registros em Formulário com filtro por Usuário AttachmentUsuario.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (201 Kb) Baixado 41 vez(es)
    avatar
    Chamon Consultoria
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 266
    Registrado : 31/08/2012

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Re: [Resolvido]Registros em Formulário com filtro por Usuário

    Mensagem  Chamon Consultoria 29/10/2014, 18:53

    Rubens, boa tarde!

    O exemplo que você postou é exatamente o que preciso.

    Fiz umas adaptações no meu sistema de acordo com os procedimentos que você indicou.
    Só não consegui inserir a variável Temporária "TempVars!IdUsuario" e atribuir o valor do usuário da tela de login a esta variável.
    Veja, por favor, se você consegue apenas adicionar essa variável mantendo o restante do código com está.

    Segue anexo o sistema com as adaptações feitas.

    Desde já agradeço.
    Anexos
    [Resolvido]Registros em Formulário com filtro por Usuário AttachmentDemo - 29-10 rubens.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.2 Mb) Baixado 19 vez(es)
    rubenscouto
    rubenscouto
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 02/10/2011

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Re: [Resolvido]Registros em Formulário com filtro por Usuário

    Mensagem  rubenscouto 29/10/2014, 22:42

    veja no codigo do botão bnt_ok do formulario de login as alterações que fiz. alterei as senhas todas para 123. no evento após atualizar da senha de login  inserir um comando de chamar o evento do botão ok da tela de login. após a abertura da tela de login, ou abra o sistema bypassado e veja a consulta 1. ela tem como criterio do IdUsuario o valor da variavel TempVars!IdUsuario. veja que os valores mostrados são somente dos usuarios logados, para este exemplo os usuarios 1,2 e 3. também desabilitei o campo IdUsuario da tela de vendas. este deve ficar assim para evitar alterações indevidas. qualquer coisa , envie-me uma mensagem.
    avatar
    Chamon Consultoria
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 266
    Registrado : 31/08/2012

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Re: [Resolvido]Registros em Formulário com filtro por Usuário

    Mensagem  Chamon Consultoria 30/10/2014, 13:45

    Rubens, bom dia!

    Fiz as alterações e o sistema ficou ótimo!
    Só uma dúvida: precisei alterar o nível do usuário "User 01" de nível 2 para 1 (Adm), porém ele não consegue visualizar todos os registros como Adm.
    Alguma sugestão?

    Obrigado!
    avatar
    Chamon Consultoria
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 266
    Registrado : 31/08/2012

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Re: [Resolvido]Registros em Formulário com filtro por Usuário

    Mensagem  Chamon Consultoria 13/1/2015, 18:43

    Obrigado a todos pela ajuda!
    rubenscouto
    rubenscouto
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 02/10/2011

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Re: [Resolvido]Registros em Formulário com filtro por Usuário

    Mensagem  rubenscouto 6/2/2015, 01:03

    No exemplo que criei baseado no Maestro_v5 o administrador verifica todos os registros de todos os usuários, porém outros usuários só conseguem ver os seus próprios registros. Este exemplo não comtempla níveis de usuários, existe apenas um administrador e os demais são usuários usuários.
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4140
    Registrado : 29/06/2012

    [Resolvido]Registros em Formulário com filtro por Usuário Empty Re: [Resolvido]Registros em Formulário com filtro por Usuário

    Mensagem  Noobezinho 6/2/2015, 10:21

    Caso tenham interesse em Acesso por grupos/níveis de usuários,
    Vejam esse meu exemplo.
    Ele foi baseado no exemplo do Avelino que usa o nível de usuário.

    [!]'s

    Noob


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.

    Conteúdo patrocinado


    [Resolvido]Registros em Formulário com filtro por Usuário Empty Re: [Resolvido]Registros em Formulário com filtro por Usuário

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 02:43