bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Usando Access - Criando uma InputBox com entrada para senha

... Assinatura do site por 1 ano + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$100,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Criando uma InputBox com entrada para senha

Antes de iniciar sua leitura, clique aqui e cadastre-se para receber comunicados sobre novos artigos.

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:

Alinhamento txt

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:

Alinhamento txt

É 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:

Alinhamento txt

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:

Alinhamento txt

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.

Option Compare Database
Public varInputBox As Variant

Public Function InputBox2(Mensagem As String, Título As String, _
Optional ValorPadrão As Variant = vbNullString, _
Optional Máscara As Variant = vbNullString) As Variant

Dim strOpenArgs As String
On Error GoTo trataErro
'-------------------------------------------------------------------------
'Limpa a variável que recebe o conteúdo digitada no formulário frmInputBox
'-------------------------------------------------------------------------
varInputBox = vbNullString
'-----------------------------------------------------------
'Variável recebe os argumentos inseridos na função InputBox2
'------------------------------------------------------------
strOpenArgs = Mensagem & "|" & Título & "|" & ValorPadrão & "|" & Máscara
'------------------------------------------------------------------
'Abre o formulário frmInputBoxX no modo MODAL E POPUP (acDialog)
'As informações contidas na variável strOpenArgs são passadas para
'o formulário, através do argumento OpenArgs
'-------------------------------------------------------------------
DoCmd.OpenForm "frmInputBox", , , , , acDialog, strOpenArgs
'-----------------------------------------------------------------------------
'Aqui o código fica interrompido até que se feche o formulário
'Após o fechamento do formulário, a função captura o valor que foi digitado e
'que está contido na variável pública varInputBox
'-----------------------------------------------------------------------------
InputBox2 = varInputBox
Sair:
   Exit Function
trataErro:
   MsgBox "Não é possível abrir a caixa InputBox...", vbInformation, "Aviso"
   Resume Sair
End Function

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:

Alinhamento txt

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!


 

 


8 comentários

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!!!

Alvaro Teixeira   04/10/2016 13:48:09

Obrigado pela partilha.
Sempre aprender!

aan   04/10/2016 18:30:47

Uma sorte ter gurus neste forum.
O meu muito o brigado.

Jose Baptista   06/10/2016 06:24:52

Grande Avelino!
Obrigado por mais esta dica
Abraço

Paulo   07/10/2016 10:46:29

Nossa! quanto trabalho eu poderia ter poupado em alguns sistemas que não requeriam nada de sofisticado.

Claudemir   10/10/2016 22:36:33

Muito bom Avelino, parabéns pelo sucesso em suas soluções!

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).

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.


Envie seu comentário: