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çado: Requer conhecimentos avançados sobre codificação, interoperabilidade e multi-utilizador.
Este artigo aplica-se apenas a uma base de dados do Microsoft Access (.mdb).
A Microsoft fornece exemplos de programação apenas, para fins sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, as garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação apresentada e as ferramentas que são utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.
atenção : Se seguir os passos neste exemplo, modificará a base de dados de exemplo Adamastor.mdb. Convém cópia de segurança do ficheiro de base de dados Adamastor.mdb e siga estes passos numa cópia da base de dados.
Nota : O código de exemplo deste artigo utiliza Microsoft Data Access Objects. Para que este código seja executado correctamente, tem de referenciar a biblioteca Microsoft DAO 3.6 Object Library. Para o fazer, clique em References no menu Ferramentas no Editor do Visual Basic e certifique-se de que está seleccionada a caixa de verificação Microsoft DAO 3.6 Object Library .
Utilizar a palavra-passe de código proteger um formulário
Utilizando o código, pode pedir uma palavra-passe quando um utilizador abre um formulário ou relatório. Se for introduzida a palavra-passe correcta, é aberto o formulário ou relatório.
O exemplo seguinte mostra como pode palavra-passe proteger o formulário Encomendas na base de dados exemplo Adamastor.mdb:
Inicie o Access e abra a base de dados de exemplo Adamastor.mdb.
Prima ALT+F11 para iniciar o Microsoft Visual Basic editor.
No menu Inserir , clique em módulo .
Na folha do módulo, escreva 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
Prima ALT+F11 para regressar ao Access.
Na janela Base de dados, em objectos , clique em tabelas e, em seguida, clique em Novo .
Na caixa de diálogo Nova tabela , faça duplo clique Vista de estrutura .
Criar uma nova tabela da seguinte forma:
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, em seguida, introduza os seguintes dados:
ObjectName: Orders
KeyCode: 2818
Criar um novo formulário na vista de estrutura e guarde o formulário como frmPassword.
Adicionar uma caixa de texto única frmPassword chamado Text0 e um botão de comando chamado CheckPassword.
Defina a propriedade Máscara de introdução de Text0 para "PASSWORD" (menos as aspas).
Adicione o seguinte código para o evento AoFazerClique do botão CheckPassword e, em seguida, guardar 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 Encomendas na vista de estrutura.
Se a folha de propriedades não estiver visível, clique em Propriedades no menu Ver .
Escreva o seguinte procedimento de evento no módulo para a propriedade AoAbrir 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, em seguida, guarde o formulário Encomendas.
Abra o formulário Encomendas e escreva palavra-passe quando lhe for pedido para uma palavra-passe.
Repare que encomendas formam é aberto. KeyCode gerado pela palavra-passe corresponde KeyCode na tabela tblPassword e depende de caso das letras da palavra-passe introduzida.
Feche e volte a abrir o formulário Encomendas e, em seguida, escreva palavra-passe quando lhe for pedido para uma palavra-passe.
Repare que receberá a mensagem:
Desculpa introduziu a palavra-passe errada. Tente novamente.
Não é aberto o formulário Encomendas uma vez que o procedimento de palavra-passe é sensível a maiúsculas e minúsculas.
Para determinar o que KeyCode correspondente é uma cadeia específica, escreva o seguinte na janela Immediate e prima ENTER:
?KeyCode("TestString")
o exemplo anterior devolve 5864.
Para ocultar a tabela tblPassword na janela Base de dados, clique com o botão direito do rato na tabela tblPassword e, em seguida, clique em Propriedades . Na janela Propriedades, clique para seleccionar a caixa de verificaçã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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/
)
Qual foi o esforço que despendeu pessoalmente para utilizar este artigo?
Muito baixo
Baixo
Moderado
Elevado
Muito elevado
Diga-nos porquê e o que podemos fazer para melhorar estas informações
Obrigado! Os seus comentários são utilizados para ajudar-nos a melhorar o conteúdo do nosso suporte. Para obter mais opções de assistência, visite a Home Page de Ajuda e Suporte.