ID do artigo: 209871 - Última revisão: quinta-feira, 23 de junho de 2005 - Revisão: 3.0

ACC2000: Como criar uma senha protegida formulário ou relatório

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

Nesta página

Expandir tudo | Recolher tudo

Sumário

Microsoft Access possui dois recursos internos de segurança para proteger seu banco de dados:
  • Permissões e contas de usuário/grupo
  • Senhas de banco de dados
Este artigo mostra como você pode também definir senhas individuais para cada formulário e para cada relatório no banco de dados.

Mais Informações

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.

Usando código para senha proteger um formulário

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:
  1. Inicie o Access e abra o banco de dados de exemplo Northwind.mdb.
  2. Pressione ALT+F11 para iniciar o editor do Microsoft Visual Basic.
  3. No menu Inserir , clique em módulo .
  4. 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
    					
  5. Pressione ALT+F11 para retornar para o Access.
  6. Na janela banco de dados, em objetos , clique em tabelas e, em seguida, clique em novo .
  7. Na caixa de diálogo Nova tabela , clique duas vezes Modo Design .
  8. 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
    					
  9. Abra a tabela tblPassword e insira os seguintes dados:
         ObjectName: Orders
           KeyCode: 2818
    					
  10. Criar um novo formulário no modo de design e salve o formulário como frmPassword.
  11. Adicione uma caixa de texto para frmPassword chamado Text0 e um botão de comando chamado CheckPassword.
  12. Defina a propriedade Máscara de entrada Text0 para "PASSWORD" (menos as aspas).
  13. 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 
    					
  14. Abra o formulário Pedidos no modo de design.
  15. Se a folha de propriedades não estiver visível, clique em Propriedades no menu Exibir .
  16. 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
    					
  17. Feche e salve o formulário Pedidos.
  18. 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.
  19. 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.
  20. 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.
  21. 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 .

A informação contida neste artigo aplica-se a:
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbmt kbhowto KB209871 KbMtpt
Tradução automáticaTradução automática
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/ )