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

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é 2x no Cartão de Crédito, através do Paypal. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 

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!


 

 


13 comentários

Dr. Alessandro   04/02/2021 00:31:40

Bom dia, na verdade minha linha de comando foi essa:

Private Sub Localizar_Sintomas_Click()
Dim CaixaTexto
Dim Sintoma
VarCaixaTexto = InputBox("Digite os Sintomas", [Sintoma])
If VarCaixaTexto = Sintoma Then
DoCmd.OpenForm "ePatologias", , , , , , Sintoma
Private SubForm_Open (Cancel As Integer] - - - - - - - - >> ele não compilou isso, pediu )
DoCmd.OpenForm "ePatologias", OpenArgs:=Sintoma
MsgBox Me.OpenArgs
End Sub
End If
End Sub


Dr. Alessandro   04/02/2021 00:31:39

Bom dia, na verdade minha linha de comando foi essa:

Private Sub Localizar_Sintomas_Click()
Dim CaixaTexto
Dim Sintoma
VarCaixaTexto = InputBox("Digite os Sintomas", [Sintoma])
If VarCaixaTexto = Sintoma Then
DoCmd.OpenForm "ePatologias", , , , , , Sintoma
Private SubForm_Open (Cancel As Integer] - - - - - - - - >> ele não compilou isso, pediu )
DoCmd.OpenForm "ePatologias", OpenArgs:=Sintoma
MsgBox Me.OpenArgs
End Sub
End If
End Sub


Dr. Alessandro   04/02/2021 00:31:28

Bom dia, na verdade minha linha de comando foi essa:

Private Sub Localizar_Sintomas_Click()
Dim CaixaTexto
Dim Sintoma
VarCaixaTexto = InputBox("Digite os Sintomas", [Sintoma])
If VarCaixaTexto = Sintoma Then
DoCmd.OpenForm "ePatologias", , , , , , Sintoma
Private SubForm_Open (Cancel As Integer] - - - - - - - - >> ele não compilou isso, pediu )
DoCmd.OpenForm "ePatologias", OpenArgs:=Sintoma
MsgBox Me.OpenArgs
End Sub
End If
End Sub


Dr. Alessandro   03/02/2021 23:45:28

Boa noite. Criei um humilde formulário de Doenças contendo: Causas (etiologia), sintomas, diagnóstico (se é R-x ou Exame de sangue, p.ex.), tratamento e doagem dos medicamentos (Posologia).
Estou tentando criar uma caixa de pesquisa de algum sintoma ou sintomas (mesmo fora de ordem) que possa ser localizado no meu formulário, me indicando o nome da doença, o diagnóstico, o tratamento e a posologia uma TextBox, como você está fazendo, mas está apárecendo um erro de compilação ao clicar enter após entrar com um sintoma numa caixa que fiz Veja o que estou tentando fazer:

Private Sub Localizar_Sintomas_Click()
Dim CaixaTexto
Dim Sintoma
VarCaixaTexto = InputBox("Digite os Sintomas", [Sintoma])
If VarCaixaTexto = Sintoma Then
DoCmd.OpenForm "ePatologias", , , , , , Sintoma
Private SubForm_Open (Cancel As Integer]
DoCmd.OpenForm "ePatologias", OpenArgs:=Sintoma
MsgBox Me.OpenArgs
End Sub
End If
End Sub

Onde estou errando e como devo agir para conseguir isso? Forte abraço e parabéns pelo Fórum.

Claudinei aparecido dos santos   26/10/2020 20:08:50

Mestre avelino!
Tentei adptar par um relatorio, mas nao estou conseguindo, no caos eu precisava que comparece duas datas( o famoso ente... e...)
Porem nao consigo fazer dar certo no evento ao abrir o relatorio.

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


Envie seu comentário: