Criando uma InputBox com entrada para senha
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 10x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
A InputBox nativa do Access não tem recurso para esconder a senha digitada. Esta afirmação pode ser confirmada, se você abrir o VBA de seu aplicativo e na Janela Imediata (CTRL + G), digitar o comando abaixo e logo em seguida, dar <Enter>
? Inputbox("Entre com a senha...","Senha")
Ao digitar a senha, observe que a informação fica exposta:
Com um simples formulário e um pouco de programação é possível montar a nossa própria InputBox e incrementar o recurso de máscara para a digitação de senha.
Para alterar a máscara de um campo do formulário, pelo VBA, utilizamos a propriedade InputMask.
Me!txtValorDigitado.InputMask = "Password"
Com a configuração desta propriedade para Password (senha), são apresentados os asteriscos no lugar do valor digitado. Veja nesta imagem, o formulário personalizado:
É possível configurar o formulário InputBox com uma série de informações, tais como: mensagem, título, valor padrão e o tipo de máscara a ser usado no campo. Para isso, basta empregar a técnica do argumento OpenArgs, do comando Docmd.OpenForm. Observe abaixo, o código de abertura de um formulário:
DoCmd.OpenForm "frmTeste",,,,,,"Avelino Sampaio | João Henrique | 1234567"
O código pode ser também, escrito assim:
DoCmd.OpenForm "frmTeste",OpenArgs:="Avelino Sampaio | João Henrique | 1234567"
Agora, abra o formulário de teste e escreva a seguinte linha no evento "Ao abrir":
Private Sub Form_Open(Cancel As Integer) MsgBox Me.OpenArgs End Sub
Veja o resultado:
Observe que utilizei a barra vertical "|" para separar as informações. O Access possui uma função chamada de Split(), que usa uma "referência" para separar as informações numa cadeia. No nosso caso, vamos usar como referência a barra vertical "|". No evento "Ao abrir" do formulário de teste, utilize o seguinte código:
Private Sub Form_Open(Cancel As Integer) Dim k, strTexto As String
'-----------------------------------------------------------------
'Separa as informações, tendo como referência a barra vertical "|"
'----------------------------------------------------------------- k = Split(Me.OpenArgs, "|")
strTexto = "Nome Pai: " & k(0) & vbNewLine strTexto = strTexto & "Nome Filho: " & k(1) & vbNewLine strTexto = strTexto & "Código: " & k(2)
MsgBox strTexto End Sub
Ao rodar o comando Docmd.OpenForm acima, teremos o resultado conforme esta imagem:
O projeto
Leia com atenção os comentários da função InputBox2(), criada para chamar a caixa InputBox personalizada. Observe que os argumentos Mensagem, Título, Valor Padrão e Máscara pertencentes a função são passados para o formulário, através do OpenArgs.
Ao ser aberto o formulário frmInputBox, os valores passados no argumento OpenArgs são distribuídos para os controles apropriados:
Private Sub Form_Open(Cancel As Integer) Dim k k = Split(Me.OpenArgs, "|") Me!txtMensagem = k(0) 'Recebe a mensagem Me.Caption = k(1) 'Recebe o título Me!txtValorDigitado = k(2) 'Recebe o valor padrão Me!txtValorDigitado.InputMask = k(3) 'Recebe a máscara End Sub
Baixe o arquivo e faça o teste:
Clique aqui e baixe o arquivo exemplo.
Abra a Janela Imediata (CTRL+G) do VBA, digite a linha exibida abaixo e dê <enter>:
? inputBox2("Entre com a senha...","Senha",,"PassWord")
A caixa InputBox é aberta com as informações que foram passadas. Digite uma senha qualquer e dê <enter>. O resultado digitado irá aparecer na Janela Imediata.
É possível ainda, utilizar a caixa InputBox para solicitar um outro tipo de informação. Vamos supor que eu queira solicitar que o usuário entre com uma determinada data. Veja como fica a função:
? inputBox2("Entre com a data de venda...","Data venda",,"00/00/000;0")
Observe o resultado:
Veja que no final da máscara, coloquei um ";0". Isso significa que o Access irá retornar a data digitada junto com a máscara. Sem isso, a data sairia no formato 10072016 e não no formato 10/07/2016.
Teste mais um exemplo, usando agora, uma máscara para a entrada de telefone celular:
? inputBox2("Celular de contato...","Celular",,"0-0000-0000;0")
Ao abrir o formulário frmClientes, a caixa InputBox personalizada é aberta e a senha de acesso, solicitada. O seguinte código foi utilizado no evento "ao abrir" do formulário:
Private Sub Form_Open(Cancel As Integer) Dim x As Variant x = InputBox2("Entre com a senha...", "Senha", , "password") If StrPtr(x) = 0 Then MsgBox "Você cancelou a entrada da senha...", vbInformation, "Aviso" Cancel = True 'impede a abertura do formulário Else If x <> "#456" Then MsgBox "Senha não confere...", vbInformation, "Aviso" Cancel = True 'impede a abertura do formulário End If End If End Sub
Basta passar para o seu projeto o formulário frmInputBox e o módulo mod_InputBox.
Sucesso!
Os dez artigos mais visitados
MontaRibbons v.7.0 - Assistente completo para criar ribbons no Access
Vídeo - Controle personalizado de Acesso de Usuários
Vídeo - Segurança máxima, usando o OPEN
Uma ajuda para quem está começando um negócio ou um projeto
Vídeo - Aprenda sobre filtragens
Adquira o kit UsandoAccess e aprenda em alta velocidade
Vídeo - Programação de relatórios - Parte 1
Desabilitando a faixa(ribbon) superior do Access
Vídeo - Criando Ribbons parte 1 - Conhecendo a estrutura Xml
Como carregar o seu menu sem que ele vá para lista de suplementos
8 comentários Avelino Sampaio 06/11/2018 08:21:36 Antonio - faça um backup do seu projeto; - crie uma senha de acesso pela próprio Access; - passe a extensão de ACCDB para ACCDR; - utilize o meu aplicativo OPEN para dar partida no aplicativo, sem que o usuário tenha conhecimento da senha que vc criou; - quando então precisar ter acesso a estrutura, volte com a extensão para ACCDB e abra o seu aplicativo usando a senha criada. Para ter acesso ao OPEN é necessário ser nosso assinante. Aproveita que estamos com uma ótima promoção(Tudo por R$100,00) neste mês do Black Friday Veja o artigo do OPEN: http://www.usandoaccess.com.br/tutoriais/seguranca-microsoft-access-usando-o-open.asp?id=1#inicio E a página para adquirir a assinatura, caso esteja interessado. http://www.usandoaccess.com.br/tutoriais/aprenda-access-com-apostilas-videos-e-exemplos.asp?id=11#inicio Qualquer dúvida, não hesite em perguntar. ANTONIO FERREIRA DA SILVA NETO 06/11/2018 06:45:51 Bom dia, Avelino! Gostaria de saber como faço para criar uma senha de administrador para liberar acesso total a estrutura do meu banco de dados(Para poder fazer manutenção do sistema). Claudemir 10/10/2016 22:36:33 Muito bom Avelino, parabéns pelo sucesso em suas soluções! Paulo 07/10/2016 10:46:29 Nossa! quanto trabalho eu poderia ter poupado em alguns sistemas que não requeriam nada de sofisticado. Jose Baptista 06/10/2016 06:24:52 Grande Avelino! Obrigado por mais esta dica Abraço aan 04/10/2016 18:30:47 Uma sorte ter gurus neste forum. O meu muito o brigado. Alvaro Teixeira 04/10/2016 13:48:09 Obrigado pela partilha. Sempre aprender! Antonio Carlos 04/10/2016 11:45:21 Mestre Avelino Estava usando uma aqui com um monte de APIs. Muito mais simples essa sua. Valeu!!! |