Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Avançadas: Requer especialista de codificação, interoperabilidade e habilidades de multiusuário.
Este artigo se aplica somente a um banco de dados do Microsoft Access (.mdb).
Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação para uma finalidade específica. Este artigo presume que você está familiarizados com a linguagem de programação que está sendo demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Engenheiros de suporte podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades.
cuidado : se você seguir as etapas neste exemplo, você modificar o banco de dados de exemplo Northwind.mdb. Convém fazer o backup do arquivo Northwind.mdb e seguir essas etapas numa cópia do banco de dados.
Observação : O código de exemplo neste artigo usa o Microsoft Data Access Objects. Para que este código seja executado corretamente, você deve fazer referência a Microsoft DAO 3.6 Object Library. Para fazer isso, clique em referências no menu Ferramentas no Editor do Visual Basic e veja que a caixa de seleção Microsoft DAO 3.6 Object Library está selecionada.
Por meio de código, você pode solicitar uma senha quando um usuário abre um formulário ou relatório. Se a senha correta for inserida, o formulário ou relatório é aberto.
O exemplo a seguir mostra como você pode senha proteger o formulário Pedidos no banco de dados de exemplo Northwind.mdb:
Inicie o Access e abra o banco de dados de exemplo Northwind.mdb.
Pressione ALT+F11 para iniciar o editor do Microsoft Visual Basic.
No menu Inserir , clique em módulo .
Na folha de módulo, digite o seguinte procedimento:
Public MyPassword
Public Function KeyCode(Password As String) As Long
' This function will produce a unique key for the
' string that is passed in as the Password.
Dim I As Integer
Dim Hold As Long
For I = 1 To Len(Password)
Select Case (Asc(Left(Password, 1)) * I) Mod 4
Case Is = 0
Hold = Hold + (Asc(Mid(Password, I, 1)) * I)
Case Is = 1
Hold = Hold - (Asc(Mid(Password, I, 1)) * I)
Case Is = 2
Hold = Hold + (Asc(Mid(Password, I, 1)) * _
(I - Asc(Mid(Password, I, 1))))
Case Is = 3
Hold = Hold - (Asc(Mid(Password, I, 1)) * _
(I + Len(Password)))
End Select
Next I
KeyCode = Hold
End Function
Pressione ALT+F11 para retornar para o Access.
Na janela banco de dados, em objetos , clique em tabelas e, em seguida, clique em novo .
Na caixa de diálogo Nova tabela , clique duas vezes Modo Design .
Criar uma nova tabela da seguinte maneira:
Table: tblPassword
---------------------------
Field Name: ObjectName
Data Type: Text
Field Size: 50
Field Name: KeyCode
Data Type: Text
Field Size: 25
Input Mask: Password
Table Properties: tblPassword
-----------------------------
PrimaryKey: ObjectName
Abra a tabela tblPassword e insira os seguintes dados:
ObjectName: Orders
KeyCode: 2818
Criar um novo formulário no modo de design e salve o formulário como frmPassword.
Adicione uma caixa de texto para frmPassword chamado Text0 e um botão de comando chamado CheckPassword.
Defina a propriedade Máscara de entrada Text0 para "PASSWORD" (menos as aspas).
Adicione o seguinte código para o evento OnClick do botão CheckPassword e, em seguida, salve o formulário:
If IsNull(Forms!frmPassword!Text0.Value) Then
MsgBox "You cannot enter a blank Password. Try again."
Me!Text0.SetFocus
Else
MyPassword = Me!Text0.Value
DoCmd.Close acForm, "frmPassword"
End If
Abra o formulário Pedidos no modo de design.
Se a folha de propriedades não estiver visível, clique em Propriedades no menu Exibir .
Digite o seguinte procedimento de evento no módulo para a propriedade OnOpen do formulário:
Private Sub Form_Open(Cancel as Integer)
Dim Hold As Variant
Dim tmpKey As Long
Dim I As Integer
Dim rs As DAO.Recordset
Dim db As DAO.Database
On Error GoTo Error_Handler
' Prompt the user for the Password.
DoCmd.OpenForm "frmPassword", acNormal, , , , acDialog
Hold = MyPassword
' Open the table that contains the password.
Set db = CurrentDb
Set rs = db.OpenRecordset("tblPassword", dbOpenTable)
rs.Index = "PrimaryKey"
rs.Seek "=", Me.Name
If rs.NoMatch Then
MsgBox "Sorry cannot find password information. Try Again"
Cancel = -1
Else
' Test to see if the key generated matches the key in
' the table; if there is not a match, stop the form
' from opening.
If Not (rs![keycode] = KeyCode(Cstr(Hold))) Then
MsgBox "Sorry you entered the wrong password." & _
"Try again.", vbOKOnly, "Incorrect Password"
Cancel = -1
End If
End If
rs.Close
db.Close
Exit Sub
Error_Handler:
MsgBox Err.Description, vbOKOnly, "Error #" & Err.Number
Exit Sub
End Sub
Feche e salve o formulário Pedidos.
Abra o formulário Pedidos e digite PASSWORD quando for solicitado para uma senha.
Observe que a pedidos formulário abre. KeyCode gerado pelo PASSWORD corresponde ao KeyCode na tabela tblPassword e é dependente de maiúsculas e minúsculas na senha inserida.
Feche e reabra o formulário Pedidos e digite senha quando for solicitado para uma senha.
Observe que você recebe a mensagem:
Desculpe você inseriu a senha errada. Tente novamente.
O formulário Pedidos não abre porque o procedimento de senha é diferencia maiúsculas de minúsculas.
Para determinar o que é o KeyCode correspondente para uma determinada seqüência de caracteres, digite o seguinte na janela Verificação imediata e pressione ENTER:
?KeyCode("TestString")
o exemplo anterior retorna 5864.
Para ocultar a tabela tblPassword na janela banco de dados, clique com o botão direito na tabela tblPassword e, em seguida, clique em Propriedades . Na janela Propriedades, clique para selecionar a caixa de seleção oculto e, em seguida, clique em OK .
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 209871
(http://support.microsoft.com/kb/209871/en-us/
)
Quanto esforço foi necessário para seguir os procedimentos deste artigo?
Muito baixo
Baixo
Moderado
Alto
Muito alto
Diga-nos o porque e o que podemos fazer para melhorar esta informação
Obrigado! Seus comentários são usados para nos ajudar a aperfeiçoar o conteúdo de suporte. Para obter mais opções de ajuda, visite a Home Page de Ajuda e Suporte.