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


3 participantes

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 26/3/2017, 14:11

    Boa tarde a todos. ** Uso o Access 2003

    Para o que eu estava precisando, pesquisei e entre vários encontrei o tópico: https://www.maximoaccess.com/t7545-como-bloquear-meu-formulario
    que atendeu parcialmente o que precisava, então preciso do seguinte:

    A) Bloquear/Desbloquear apenas o registro atual do formulário (Simples)
    B) Bloquear/Desbloquear em massa outros tipos de controles além de Caixas de texto (Subformulário, Botão de comando, etc)
    C) Um usuário "X" apenas poder Bloquear o registro atual, mas não poder Desbloqueá-lo, ou seja, apenas o usuário 'Admin' ou outro indicado na rotina podem Bloquear e/ou Desbloquear.

    Obs: A ideia é que apenas o Secretário do setor possa bloquear o registro atual do qual ele é responsável, sem ter o privilégio de desbloqueá-lo, e apenas o Administrador ou outro indicado possam bloquear e/ou desbloquear qualquer registro.

    Para a opção 'A' acima usei o seguinte comando no evento 'No Atual':

    Private Sub Form_Current() 'Rotina em 26/03/2017
           If Me.lblBloq = "Registro BLOQUEADO" Then
              Me.lblBloq = "Registro BLOQUEADO"
           Else
              Me.lblBloq = "Registro DESBLOQUEADO"
           End If

    *PS2: lblBloq = Caixa de texto para capturar o status do registro: Bloqueado ou Desbloqueado

    For Each ctl In Me.Controls
       If ctl.ControlType = acTextBox Then 'para caixas de texto
          ctl.Enabled = True '0 para habilitado(False), -1 para desabilitado(True) * PS1
       End If
    Next
    End Sub

    No entanto, a rotina bloqueia todos os Registros, e não apenas o atual
    PS1: Nesta linha no tópico, está ctl.Enabled = 0. Tentei adaptar para ctl.Enabled = True, mas não deu certo

    A rotina completa está assim:

    Botão de comando: 'BloquearTudo' no evento 'Ao Clicar':

    Private Sub BloquearTudo_Click() 'Rotina em 26/03/2017
    'Coloquei 'A' na linha Marca(Tag) da aba Outras, nas propriedades dos campos que for entrar na condição
           If UsuarioSessao = "ADMIN" Or UsuarioSessao = "ALERRANDRO" Then
           Else
              Exit Sub
              Cancel = True
           End If

           Dim TControle As Control
           For Each TControle In Me.Controls 'Apenas Caixas de Texto

           If TControle.Tag = "A" Then
              If TControle.Enabled = False Then
                 TControle.Enabled = True                  'Bloqueia
                 Me.F151_GuiasRemessa_Itens.Enabled = True 'Bloqueia SubFormulário
                 Me.lblBloq = "Registro DESBLOQUEADO"
              Else
                TControle.Enabled = False                  'Desbloqueia
                Me.F151_GuiasRemessa_Itens.Enabled = False 'Desbloqueia SubFormulário
                Me.lblBloq = "Registro BLOQUEADO"
              End If
           End If
           Next TControle
    End Sub
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 29/3/2017, 09:42

    Up
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 31/3/2017, 20:40

    Alguém na ajuda ?
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Re: [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  Alvaro Teixeira 31/3/2017, 21:18

    Olá, no código apresentado no vejo nenhuma condição com referência ao utilizador?
    Não será o que falta.
    Fica a dica.
    Abraço
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 1/4/2017, 14:46

    Boa tarde, prezado ahteixeira

    Já tinha pensado nisso e tentado da forma abaixo, mas também não funcionou, para isso usei o utilizador como "UsuarioX". Veja como ficou a rotina completa com essa tentativa:


    Private Sub Form_Current() 'Rotina em 26/03/2017
           If Me.lblBloq = "Registro BLOQUEADO" Then
              Me.lblBloq = "Registro BLOQUEADO"
           Else
              Me.lblBloq = "Registro DESBLOQUEADO"
           End If

    For Each ctl In Me.Controls
       If ctl.ControlType = acTextBox Then 'para caixas de texto
          ctl.Enabled = True                                                  'Não funcionou, conforme citado na opção A
       End If
    Next
    End Sub

    Private Sub BloquearTudo_Click() 'Rotina em 26/03/2017
    'Coloquei 'A' na linha Marca(Tag) da aba Outras, nas propriedades dos campos que for entrar na condição
           'If UsuarioSessao = "ADMIN" Or UsuarioSessao = "ALERRANDRO" Then
           'Else
           '   Exit Sub
           '   Cancel = True
           'End If

           Dim TControle As Control
           For Each TControle In Me.Controls 'Apenas Caixas de Texto
           
    If UsuarioSessao = "UsuarioX" Then
           If TControle.Tag = "A" Then
              If TControle.Enabled = False Then
                 TControle.Enabled = True                  'Bloqueia
                 Me.F151_GuiasRemessa_Itens.Enabled = True 'Bloqueia SubFormulário
                 Me.lblBloq = "Registro BLOQUEADO. Testando ..."
              End If
           End If
    End If
    Next TControle

    Dim TControle2 As Control
    For Each TControle2 In Me.Controls 'Apenas Caixas de Texto
           
    If UsuarioSessao = "ADMIN" Or UsuarioSessao = "ALERRANDRO" Then
           If TControle2.Tag = "A" Then
              If TControle2.Enabled = False Then
                 TControle2.Enabled = True                 'Bloqueia
                 Me.F151_GuiasRemessa_Itens.Enabled = True 'Bloqueia SubFormulário
                 Me.lblBloq = "Registro DESBLOQUEADO"
              Else
                TControle2.Enabled = False                  'Desbloqueia
                Me.F151_GuiasRemessa_Itens.Enabled = False 'Desbloqueia SubFormulário
                Me.lblBloq = "Registro BLOQUEADO"
              End If
           End If
    End If
    Next TControle2
    End Sub
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Re: [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  Alvaro Teixeira 2/4/2017, 07:09

    Olá Manoel,
    Desculpe, mas realmente na mensagem nº 1 tinha referencia aos utilizadores, veja:
    If UsuarioSessao = "ADMIN" Or UsuarioSessao = "ALERRANDRO" Then
    Não prestei bem atenção, teste assim:
    Código:
    Private Sub BloquearTudo_Click() 'Rotina em 26/03/2017
    'Coloquei 'A' na linha Marca(Tag) da aba Outras, nas propriedades dos campos que for entrar na condição
           If UsuarioSessao = "ADMIN" Or UsuarioSessao = "ALERRANDRO" Then
              Exit Sub
           End If

           Dim TControle As Control
           For Each TControle In Me.Controls 'Apenas Caixas de Texto

           If TControle.Tag = "A" Then
              If TControle.Enabled = False Then
                 TControle.Enabled = True                  'Bloqueia
                 Me.F151_GuiasRemessa_Itens.Enabled = True 'Bloqueia SubFormulário
                 Me.lblBloq = "Registro DESBLOQUEADO"
              Else
                TControle.Enabled = False                  'Desbloqueia
                Me.F151_GuiasRemessa_Itens.Enabled = False 'Desbloqueia SubFormulário
                Me.lblBloq = "Registro BLOQUEADO"
              End If
           End If
           Next TControle
    End Sub
    Abraço
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 2/4/2017, 12:26

    Olá, Teixeira

    Ao clicar colocando a rotina sugerida, nada acontece.

    Seria assim:
    1) Os usuários 'Admin' ou 'Alerrandro' podem bloquear e desbloquear qualquer registro
    2) O usuário chamado 'UsuarioX' (a ser definido) pode apenas bloquear qualquer registro, mas não pode desbloquear o registro bloqueado por ele mesmo, e sim os usuários citados acima
    3) Além disso: A rotina que usei não está bloqueando o Registro corrente (atual) e sim todos os registros, e preciso bloquear tão somente o registro atual pelos critérios 1 e 2 acima, veja a seguir:

    Private Sub Form_Current() 'Rotina em 26/03/2017
    For Each ctl In Me.Controls
      If ctl.ControlType = acTextBox Then 'para caixas de texto
         ctl.Enabled = True                                                  'Não funcionou, conforme citado no item 3
      End If
    Next
    End Sub
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Re: [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  Alvaro Teixeira 2/4/2017, 20:22

    Olá, poste a base de dados com o sistema de login e um formulário para teste dos bloqueios.
    E explique se é por botao um usuário e nível que usuário pode bloquear.
    Abraço
    avatar
    cjsilva2013
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 259
    Registrado : 26/06/2013

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  cjsilva2013 3/4/2017, 08:05

    Bom dia,

    Vileman, quando quero usar de forma simples o bloqueio de um formulário para determinado usuário, de acordo com o nível dele... Uso essa função e funciona... Basta configurar ao seu modo...

    tblUSuários
    Usuário | Nome | Nivel

    Private Sub Form_Open(Cancel As Integer)
    On Error Resume Next
    Me.txtUsuarios.Caption = getUsuarioAtual()

    '--------------------------------------------------------------------------------
    Me.Check.Visible = Eval("getUsuarioAtual() in('Administrador','Registration')")
    Me.ButtonEMail.Visible = Eval("getUsuarioAtual() in('Administrador','Regisgration')")
    Me.ButtonContinue.Visible = Eval("getUsuarioAtual() in('Administrador','Registration')")
    Me.DaysLeft.Visible = Eval("getUsuarioAtual() in('Administrador','Registration')")
    Me.ProductCode.Visible = Eval("getUsuarioAtual() in('Administrador','Registration')")
    Me.RegCode1.Visible = Eval("getUsuarioAtual() in('Administrador','Registration')")
    Me.Text0.Visible = Eval("getUsuarioAtual() in('Administrador','Registration')")

    If Eval("getusuarioatual() in('Administrador','Registration')") = True Then
       Me.lblMensagem.Caption = "Acesso Liberado!"
    Else
       Me.lblMensagem.Caption = "Usuário não autorizado. Só com senha Administrador!"
    End If
    End Sub

    Explicando:
    * getUsuarioAtual() = A função que pega o nome do usuário logado. "Para isso, é preciso criar uma Label "Usuário e no Evento Ao Abrir, colocar a função Me.txtUsuarios.Caption = getUsuarioAtual()".
    * Administrador = É o nível do usuário conforme tblUser e Script do LoginSenha. "Você restringe conforme necessidade prelo Nível".
    * Registration = O nome do Formulário

    Criei uma Label = lblMenssagem, para pegar a chamada se o usuário está liberado ou não...

    Boa sorte!

    Jefferson D'Assis - BereiaSoft® Control Systems

    Já para vários usuários no caso de Sistemas maiores com mais tabelas e controles... Uma opção boa é a do "Maestro" do amigo, Avelino Sampaio... Baixe a aplicação aqui na busca do fórum e dando uma estudada, você consegue adaptar a sua necessidade...

    http://www.usandoaccess.com.br/dicas/dica34.asp?id=1#inicio
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 3/4/2017, 20:20

    Olá, Teixieira

    Irei fazer como pede e depois posto o arquivo.

    Olá CjSilva2013

    Vou testar com sua rotina e posto o resultado. Valeu.
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 4/4/2017, 09:52

    Caro cjsilva2013

    O que pretendo é que um determinado usuário, por exemplo: João, possa incluir um registro no formulário e após essa inclusão ele possa bloquear esse registro corrente (atual), e após esse bloqueio o usuário João não poderá desbloqueá-lo, mas apenas o usuário Admin e um outro usuário com permissão para tal, tipo um gerente; em resumo: João apenas pode bloquear o registro, mas só quem pode desbloquear é Admin ou usuário gerente.

    Entendo que dessa forma não seria a nível de uma tabela 'tblUsuários' com nível de usuário e sim a nível de registro no formulário, embora logicamente o usuário seja capturado pela função getUsuarioAtual() que captura o usuário logado. Mesmo assim tentei adaptar sua rotina, mas não consegui fazer funcionar como pretendo.

    Vou postar o arquivo conforme o colega ahteixeira recomendou, e fique a vontade para continuar na ajuda também, obrigado.
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 4/4/2017, 18:46

    Caros colegas, segue abaixo o link do arquivo para apreciação, conforme solicitado.
    Fico no aguardo.


    https://www.dropbox.com/s/qwqk5bzl2xa0zct/FMA%20-%20BloqueioXUsuario.zip?dl=0
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Re: [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  Alvaro Teixeira 7/4/2017, 08:36

    Olá Manoel,
    Faltou a parte dos usuarios, como vamos controlar no formulario se não postou essa parte?
    Vou fazer uma simulação.
    Ainda não vi tudo mas da forma que tem não podia dar.
    Como identifica o registo bloqueado??? Tem que ter esse campo na tabela (T15_GuiasRemessa), só assim pode verificar o estado do registo.
    Estou a ver o que consigo fazer para ajudar.
    Abraço
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 7/4/2017, 08:47

    Bom dia, ahteixeira

    Amigo, a parte dos usuários está especificamente na tabela "User"

    PS: quanto a identificar o registro bloqueado fiz assim:
    Coloquei 'A' na linha Marca(Tag) da aba Outras, nas propriedades dos campos que for entrar na condição

    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Re: [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  Alvaro Teixeira 7/4/2017, 09:06

    Olá, eu sei que tem a tabela.
    Mas repare, quando abro o form o sitema tem que saber qual o usuario que entrou.
    Para aí controlar.
    Já criei um form para simular os usuarios logados.
    Estou a finalizar exemplo.
    Abraço
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Re: [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  Alvaro Teixeira 7/4/2017, 10:51

    Olá Manoel,
    Veja se é dentro disto.
    Repare que foi necessário adicionar campo à tabela "Bloqueado"

    Copiar link e colar no navegador:

    meocloud.pt/link/5be93893-8d04-4b43-b575-197f6fbc5420/BloqueioXUsuario.zip/

    Abraço
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 7/4/2017, 23:27

    Olá, Teixeira

    Você é fera, mesmo. Ficou melhor que a encomenda, pois a rotina permite que qualquer usuário - e não apenas um usuário como eu havia pensado - que tenha feito a inclusão de determinado registro possa apenas ele alterar e manter bloqueado tal registro, e lógico o 'Admin' e 'Alerrandro' podem alterar qualquer registro feito por qualquer usuário, além da rotina fazer isso para cada registro atual, e não para todos como estava antes.

    Faltou para fechar na perfeição o seguinte:

    1) Quando um usuário faz a inclusão do registro e inclui dados no subformulário 'F151_GuiasRemessa_Itens' a partir daí a rotina bloqueia todos os campos, inclusive os campos:
    StatusGR + Entregador + Recebedor + RecCargoFuncao + DataRecebida + HoraRecebida

    Esses campos acima estão após o subformulário e devem ficar desbloqueados para o 'txtUsuarioRegisto' pois o usuário tem que aguardar para fazer a entrega e o recebimento da Guia por terceiros para só assim finalizar o registro desses dados no formulário, porisso que havia pensado em executar essa ação a partir do usuário, ou seja, ele poder bloquear ao clicar no botão 'BloquearTudo', quando assim ele entendesse, e claro pudesse alterar a qualquer momento os registros inseridos por ele, como você fez na rotina que ficou muito boa.

    * Extra (Se for possível): No próprio formulário 'F15_GuiasRemessa' ter uma opção para que os usuários: 'Admin' ou 'Alerrandro' possam acessar o registro e poder desbloqueá-lo, sem precisar sair desse formulário aberto e do sistema.

    Exemplo: Um registro 'X' foi alterado pelo usuário 'Admin' e no momento quem está logado é o usuário 'João', tentando acessar esse tal registro 'X', mas ele não pode alterar, pois foi registrado pelo 'Admin', portanto, está bloqueado para 'João' ou qualquer outro usuário; então João chama o 'Admin' para ele alterar esse registro, pois ele não acesso ao mesmo.
    Resultado: O usuário 'Admin' precisaria sair do formulário e fazer logoff no sistema todo, visto que quem está logado é 'João'.
    O que precisa: criar uma condição para que o 'Admin' no momento em que 'João' está como usuário logado, pudesse no formulário 'F15_GuiasRemessa' abrir o formulário 'frm_simular_usuarios' - ou outra forma - escolher outro usuário, nesse caso, seria o próprio usuário 'Admin', para que não fosse necessário ele sair do sistema e voltar como usuário logado, fazer a alteração que 'João' necessita, e ainda sair de novo do sistema para 'João' fazer novo LogOn. Espero não estar pedindo muito.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Re: [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  Alvaro Teixeira 8/4/2017, 08:08

    Olá Manoel,
    Obrigado pelo retorno, os utilizadores do fórum agradecem.

    Acho que não compreendi bem a questão, no entanto se necessita que em determinados campos esteja acessivel e outros não, então será melhor adotar o outro sistema através do controlo da Tag em vez do AllowEdits.
    Para o efeito será apenas necessário alterar o código por este:
    Código:
    Private Sub Form_Current()
    'ahteixeira em 08/04/2017
    Dim TControle As Control
        
        If Me.txtUsuarioRegisto = Me.txtUsuarioLogado And Me.Bloqueado = False Or _
           Me.txtUsuarioLogado = "ADMIN" Or _
           Me.txtUsuarioLogado = "ALERRANDRO" Then
                'dá permissão ao usuario que fez registo e outros dois
                'Me.AllowEdits = True
                'Me.F151_GuiasRemessa_Itens.Form.AllowEdits = True
                    
                For Each TControle In Me.Controls 'Apenas Caixas de Texto
                    If TControle.Tag = "A" Then
                          TControle.Enabled = True
                          Me.F151_GuiasRemessa_Itens.Enabled = True
                    End If
                Next TControle
                
                Me.BloquearTudo.Enabled = True
        Else
                'retira
                'Me.AllowEdits = False
                'Me.F151_GuiasRemessa_Itens.Form.AllowEdits = False
                For Each TControle In Me.Controls 'Apenas Caixas de Texto
                    If TControle.Tag = "A" Then
                          TControle.Enabled = False
                          Me.F151_GuiasRemessa_Itens.Enabled = False
                    End If
                Next TControle
                Me.BloquearTudo.Enabled = False
        End If
    End Sub

    Relativamente à questão "Extra", para não ter que alterar o utilizador logado, pode ser ao clicar na imagem "das chaves" aparecer uma Inputbox a pedir um código de autenticação para fazer o pretendido.
    O céu é o limite, é só usar a imaginação.
    Para a minha sugestão até já tem o que necessita abaixo:
    https://www.maximoaccess.com/t344-login-com-mascara-de-password-na-inputbox#197017

    Abraço
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 8/4/2017, 19:25

    Boa noite, Teixeira

    Ficou ótimo assim também, quanto ao manuseio por todos os usuários após os registros já incluídos está perfeito, mas estar a faltar apenas um detalhe:

    Ao incluir um novo registro: A rotina inclui normalmente quando o usuário logado é 'Admin' ou 'Alerrandro', mas quando o usuário logado é 'Joao' ou 'Rui' todos os campos entram como bloqueados no formulário e não se consegue incluir um novo registro.
    * Tentei ajustar esse "detalhe" por mais de 2 horas, mas não consegui. Entre outras tentativas que não funcionaram usei a seguinte no evento 'No atual', junto com sua rotina:

        Dim newrec As Integer
        Dim TControle2 As Control
        If newrec = True Then                     'Se for um novo registro
           For Each TControle2 In Me.Controls 'Apenas Caixas de Texto
               If TControle2.Tag = "A" Then
                  TControle2.Enabled = True
                  Me.F151_GuiasRemessa_Itens.Enabled = True
               End If
           Next TControle2
           Me.BloquearTudo.Enabled = True
        End If

    PS: Irei usar a 1ª rotina feita por você, e essa outra agora (após o ajuste do detalhe) - para outras situações em outros formulários. Ambas estão ótimas. Saiu melhor que a encomenda.

    Quanto ao 'Extra' irei analisar com mais tempo, então se for o caso incluirei em um outro tópico, para finalizar este atual falta apenas o que foi relatado acima.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Re: [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  Alvaro Teixeira 8/4/2017, 22:37

    Olá Manoel,
    Para a questão do registo novo é suficiente adicionar no IF a verificação disso mesmo.
    Usando para o efeito a instrução Me.NewRecord = True

    Ficando assim:
    Código:
    Private Sub Form_Current()
    'ahteixeira em 08/04/2017
    Dim TControle As Control
        
        If Me.txtUsuarioRegisto = Me.txtUsuarioLogado And Me.Bloqueado = False Or _
           Me.txtUsuarioLogado = "ADMIN" Or _
           Me.txtUsuarioLogado = "ALERRANDRO" Or _
           Me.NewRecord = True Then
                'dá permissão ao usuario que fez registo e outros dois
                'Me.AllowEdits = True
                'Me.F151_GuiasRemessa_Itens.Form.AllowEdits = True
                    
                For Each TControle In Me.Controls 'Apenas Caixas de Texto
                    If TControle.Tag = "A" Then
                          TControle.Enabled = True
                          Me.F151_GuiasRemessa_Itens.Enabled = True
                    End If
                Next TControle
                
                Me.BloquearTudo.Enabled = True
        Else
                'retira
                'Me.AllowEdits = False
                'Me.F151_GuiasRemessa_Itens.Form.AllowEdits = False
                For Each TControle In Me.Controls 'Apenas Caixas de Texto
                    If TControle.Tag = "A" Then
                          TControle.Enabled = False
                          Me.F151_GuiasRemessa_Itens.Enabled = False
                    End If
                Next TControle
                Me.BloquearTudo.Enabled = False
        End If
    End Sub

    Abraço
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 9/4/2017, 10:35

    Bom dia, Teixeira

    Quem sabe, sabe. Bastou apenas uma linha de comando no lugar certo. Funcionou perfeitamente.

    Imprevisto: Durante todo esse tempo estava fazendo os testes na BD de testes para depois incluir quando estivesse funcionando na perfeição na minha BD original, no entanto, aconteceu o seguinte, após fazer o que segue abaixo na minha BD original:

    1) Criei campo 'Bloqueado' na tabela 'T15_GuiasRemessa'
    2) No formulário 'F15_GuiasRemessa' copiei toda rotina para os eventos:
      + 'No Atual' (Copiei suas 2 rotinas, testadas separadamente)
      + 'Antes de Atualizar' (Incluindo a linha de comando: Me!Usuario = Me.txtUsuarioLogado
      + Botão 'BloquearTudo' evento 'Ao clicar'
      + Copiei os controles: 'txtUsuarioRegistro' e 'txtUsuarioLogado
    3) Copiei o formulário 'frm_simular_usuarios'
    4) Copie o módulo 'mod_temporario_teste'

    Quando fui usar na minha BD original deu o seguinte erro ao tentar 'Depurar':
    "Erro de Compilação. Método ou membro de dados não encontrado" e aponta para a linha abaixo, destacando o campo que está em vermelho, no evento 'No Atual' do formulário:

    Private Sub Form_Current() 'Rotina em 26/03/2017. Refeita em 07/04/2017
    ' ----- 1ª ROTINA EM 07/04/2017. Autor: ahteixeira (Fórum Máximo Access)---------------------------------------------------------

           If Me.txtUsuarioRegistro = Me.txtUsuarioLogado And Me.Bloqueado = False Or Me.txtUsuarioLogado = "ADMIN" Or Me.txtUsuarioLogado = "ALERRANDRO" Then
              'dá permissão ao usuario que fez registo e outros dois
              Me.AllowEdits = True                              'Desbloqueia tudo
              Me.F151_GuiasRemessa_Itens.Form.AllowEdits = True
              Me.BloquearTudo.Enabled = True
           Else
          'retira
              Me.AllowEdits = False                             'Bloqueia tudo
              Me.F151_GuiasRemessa_Itens.Form.AllowEdits = False
              Me.BloquearTudo.Enabled = False
       End If
    End Sub
     
    PS: A 2ª rotina testada é através do controle da TAG em vez do AllowEdits, usado na 1ª rotina, mesmo assim o erro persiste. 
       
    Já havia criado o controle 'txtUsuarioRegistro' que por sua vez é o campo 'Usuario' da tabela 'T15_GuiasRemessa', mesmo assim o erro continua.
    PS: Esse erro está ocorrendo desde ontem a noite, mesmo antes de eu ver sua última mensagem hoje com a alteração para a pendencia que estava, e mesmo inserindo essa alteração de hoje, o erro continua.
    Dessa forma, repliquei todas as rotinas da BD teste para BD original, mas infelizmente quando ia dar esse tópico por resolvido, aconteceu isso.
    Revi várias vezes todos os procedimentos, campos e controles, mas o erro continua e nem sei como e porque visto que na BD Testes funciona normalmente.

    Na minha BD original o formulário em questão é completamente independente de outros formulários ou tabelas, usa apenas a 'T151_GuiasRemessa_Itens' (Subformulário 'F151_GuiasRemessa_Itens') para inserir vários itens dentro de uma Guia de Remessa (um-para-vários), que nesse caso não interfere em nada.
    Fiquei sem saber o que fazer, e para não perder todo esse trabalho que você fez e tudo que aprendi não ter sido em vão, gostaria de saber se você já passou por algo similar e se poderia me dar alguma luz nessa questão, que infelizmente aconteceu como um fato, para mim, totalmente atípico.
    Se desejar posso enviar parte da minha BD original para você ver com mais detalhes, embora como disse é praticamente a mesma da BD de testes, mas enfim, fique a vontade para fazer o melhor que achar.

    Em tempo: vou continuar tentando alguma solução, caso consiga lhe aviso, obrigado.
    Abraço
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Re: [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  Alvaro Teixeira 9/4/2017, 12:44

    Olá, não vamos complicar.
    Como referi "simulei" o sistema de login.
    Se não consegue ajustar, poste base de dados com o sistem que utiliza para login.
    Abraço
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 9/4/2017, 14:12

    Olá Teixeira

    Fiz o seguinte: Criei uma nova BD e importei todos os objetos para a mesma.
    Aconteceu o seguinte:

    1) O formulário consegue abrir normalmente sem aquele erro relatado anteriormente, mas agora aparece outro erro ao tentar abrir o formulário 'F15_GuiasRemessa:

    "Erro em tempo de execução '28'. Espaço insuficiente na pilha".
    Ao depurar aponta para a linha toda em amarelo:

    If Me.txtUsuarioRegistro = Me.txtUsuarioLogado And Me.Bloqueado = False Or Me.txtUsuarioLogado = "ADMIN" Or Me.txtUsuarioLogado = "ALERRANDRO" Then

    Sim, lembro que você criou um formulário 'frm_simular_usuarios' para capturar o usuário logado, então vou fazer o seguinte:
    Amanhã testo no trabalho que tem a rede com o login dos usuários, e também a memória RAM é de 8 Gb, enquanto que a minha é de 4 GB, talvez seja isso.
    Caso o erro persista eu mando para você parte da BD original com a rotina de login dos usuários, combinado?

    PS: Mas, se já tiver alguma sugestão sobre esse novo erro, fique a vontade.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Re: [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  Alvaro Teixeira 9/4/2017, 14:27

    Olá Manoel,
    A questão na minha opiniao está no campo Me.txtUsuarioLogado.
    Se conseguir por nesse campo o utilizador que está logado no seu sistema deve funfar.
    Abraço
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 9/4/2017, 14:47

    Olá

    Vou continuar tentando conforme sua opinião, por aqui mesmo, e se não conseguir tento amanhã no trabalho, qualquer coisa amanhã lhe digo o resultado.

    Eita, que tá dificil, rsrsrs

    Abraço
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Re: [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  Alvaro Teixeira 9/4/2017, 15:31

    Olá Manoel,
    Estive a ver na mensagem nº 21.
    O ponto 3 não é para ser utilizado no seu projeto.
    O ponto 4 pode usar.
    No entanto no seu sistema quando fizer o login "ao validar" e antes de sair do login pode atribuir o utilizador que entrou no sistema usando a chamada da função setUsuario.

    Exemplo
    setUsuario(NomeDoCampoDoUsuarioQueAcabouDeLogar)

    Abraço
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 10/4/2017, 18:09

    Olá, Teixeira

    Realmente quando testei retirando a rotina do ponto 3 citado não apareceu mais a mensagem de erro: "Espaço insuficiente de Pilha".

    E como você também havia dito na mensagem 24, quando testei usando a variável que captura o login do usuário da Rede no controle 'txtUsuarioLogado' que ficou como Fonte do controle =MyLogName(), funcionou perfeitamente.

    Hoje no trabalho não tive tempo para analisar e testar sua última sugestão da função setUsuario (aprender mais uma forma).
    Pergunta 1: Seria no lugar do 'MyLogName()' referido acima ou seria no evento 'Antes de atualizar', assim: Me!Usuario = SetUsuario(txtUsuarioLogado) ?
    Pergunta 2: Nesse caso, como ficaria os comandos para o Módulo do ponto 4 ?

    O módulo está assim:
    '07/04/2017: Criado por ahteixeira (Fórum MáximoAcces) apenas para teste
    Dim UsuarioSessao As String

    Public Function getUsuario()
          getUsuario = UsuarioSessao
    End Function

    Public Function setUsuario(xNome)
          UsuarioSessao = xNome
    End Function

    Falta pouco para encerrarmos, rsrssrs
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Re: [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  Alvaro Teixeira 11/4/2017, 19:46

    Olá Manoel,
    Não sei o que faz a sua função MyLogName()
    Se postar poderei ajudar.

    No entanto vou ver se consigo explicar para que serve a "minha" SetUsuario()
    o SET do ínicio significa atribuir o GET obter.

    Então essas duas funções são para atribuir à variavel ou obter.

    Imagine que no seu projeto na parte do Login, tem um campo txtUsuario para colocar o nome do usuario ao fazer o login e outro campo txtSenha.
    Depois deve ter uma validação que vai verificar o txtUsuario e txtSenha introduzido, se for válido deixa entrar para o seu programa.
    Nesse mesmo código, na parte que valida o usuario, mais precisamente na parte que verifica que introduziu corretamente as credênciais de acesso, pode atribuir o utilizador à variável, para isso basta a instrução:

    setUsuario(txtUsuario)

    Abraço


    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  vileman 11/4/2017, 20:34

    Boa noite, Teixeira

    A função MyLogName() faz basicamente o que o "seu" SetUsuario() faz, então está tudo explicado e dou este tópico como bem Resolvido.

    Agradeço muito pela sua boa vontade e paciência, nesse mais novo aprendizado para mim. Você é o cara II.
    Muita Paz,
    Abraço.



    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Re: [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  Alvaro Teixeira 11/4/2017, 20:37

    Olá Manoel,
    Obrigado pelo retorno.
    Abraço e bons estudos com o MaximoAccess Wink
    Abraço

    Conteúdo patrocinado


    [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários Empty Re: [Resolvido]Bloquear Formulário no Registro Atual com diferentes usuários

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 13:07