ID do artigo: 209884 - Última revisão: quarta-feira, 11 de outubro de 2006 - Revisão: 3.2

ACC2000: Como desactivar a opção "Interromper em todos os erros" no código

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.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Este artigo mostra como desativar a opção quebrar em todos os erros no Visual Basic para aplicativos de código impedir que usuários interromper seu rotinas de tratamento de erros.

Mais Informações

Mesmo quando seu código contém rotinas, tratamento de erros se você compartilhar o banco de dados com um usuário que tem a opção quebrar em todos os erros ativada no Microsoft Access, um erro em tempo de execução faz com que seu código para interromper e abrir o módulo que contém o erro. Se você não desejar que os usuários para manipular erros de tempo de execução, você pode criar procedimentos que suspender a opção de Interromper em todos os erros enquanto seu código está sendo executado.

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.

Procedimentos de exemplo para suspender e continuar a opção "Interromper em todos os erros"

Você pode usar os procedimentos de exemplo a seguir em seu próprio banco de dados para suspender temporariamente a opção de Interromper em todos os erros . Observe que esses procedimentos funcionem, se a opção de Interromper em todos os erros é definida ou não. Você pode inclui-los em seu código como proteção adicional contra expor erros em tempo de execução:
  1. Crie um módulo e digite a seguinte linha na seção Declaração:
    Dim varOldBOAEOptions As Variant
    					
  2. Digite os seguintes procedimentos:
    '-----------------------------------------------------------------
    ' Save the current setting for the "Break on All Errors" option
    ' Turn off the "Break on All Errors" option.
    '-----------------------------------------------------------------
    
    Public Sub SuspendBreaks()
    
       varOldBOAEOptions = GetOption("Error Trapping")
       SetOption "Error Trapping", 2
    
    End Sub
    
    '-----------------------------------------------------------------
    ' Restore the "Break on All Errors" settings that were temporarily
    ' suspended by the SuspendBreaks procedure.
    '-----------------------------------------------------------------
    
    Public Sub ResumeBreaks()
    
       If Not IsEmpty(varOldBOAEOptions) Then _
         SetOption "Error Trapping", varOldBOAEOptions
    
    End Sub
    					
  3. Salve o módulo como basErrHandling.
  4. Quando você deseja garantir que a Interromper em todos os erros "opção não interromper a execução do seu código, chamar o procedimento SuspendBreaks no início do seu código e chamar o procedimento ResumeBreaks no final. Por exemplo:
    Function MyCodeModule()
       SuspendBreaks
       On Error GoTo MyCodeModule_Err
    
       ' Add your code here.
    
    MyCodeModule_Exit:
       ResumeBreaks
       Exit Function
    
    MyCodeModule_Err:
    
       ' Add your error handling routine here.
    
       Resume MyCodeModule_Exit
    End Function
    					

Exemplo Mostrar resultados de diferentes configurações de "Interromper em todos os erros"

O exemplo a seguir demonstra o que acontece quando o código que contém rotinas de tratamento de erros é executado com a opção de Interromper em todos os erros ativada.

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.

  1. Inicie o Microsoft Access e crie um novo banco de dados em branco chamado MyError.mdb.
  2. Execute as etapas 1 a 3 na seção anterior para criar os procedimentos que suspender e reiniciar a opção de Interromper em todos os erros .
  3. Criar um novo formulário não com base em qualquer tabela ou consulta no modo de design:
       Form: frmTestErrors
       ----------------------------------------------------
       Caption: Test Error Handling
    
       Text box:
          Name: txtUName
       Text box:
          Name: txtPwd
       Command button:
          Name: cmdOK
          Caption: Without Turning Off Break On All Errors
          OnClick: [Event Procedure]
       Command button:
          Name: cmdOKBreakOff
          Caption: Turning Off Break On All Errors
          OnClick: [Event Procedure]
       Command button:
          Name: cmdCancel
          Caption: Cancel
          OnClick: [Event Procedure]
    					
  4. No menu Exibir , clique em código e, em seguida, digite os seguintes procedimentos:
    '---------------------------------------------------------------
    ' Test UserName and Password.
    ' Returns:
    '   True if UserName and Password are valid.
    '   False if UserName and Password are invalid.
    ' Displays corresponding error message.
    '-------------------------------------------------------------
    
    Public Function ChkPwd(uid As String, strPwd As String)
       On Error GoTo badPwd
       Dim ws As DAO.Workspace
       Set ws = DAO.DBEngine.CreateWorkspace("TestPWD", uid, strPwd)
       MsgBox "Your password is correct, " & uid
       ChkPwd = True
    
    exitChkPwd:
       Exit Function
    
    badPwd:
       MsgBox "Not the right UserName or Password, " & uid & _
         ", if that is your real name!"
       ChkPwd = False
       Resume exitChkPwd
    End Function
    
    Private Sub cmdOK_Click() ' Without "Break on All Errors" turned off.
       Call ChkPwd(Me![txtUName] & "", Me![txtPwd] & "")
    End Sub
    
    Private Sub cmdOKBreakOff_Click()
       SuspendBreaks  ' Turn off "Break on All Errors."
       Call ChkPwd(Me![txtUName] & "", Me![txtPwd] & "")
       ResumeBreaks   ' Reset "Break on All Errors."
    End Sub
    
    Private Sub cmdCancel_Click()
       DoCmd.Close
    End Sub
    					
  5. No menu Ferramentas , clique em Opções .
  6. Na caixa de diálogo Opções , clique na guia Geral e, em seguida, clique em quebra em todos os erros . Clique em OK .
  7. No menu arquivo , clique em Fechar e voltar para o Microsoft Access .
  8. Salve o formulário frmTestErrors e fechá-lo.
  9. Abra o formulário frmTestErrors no modo de formulário.
  10. Digite User1 na caixa txtUName e digite minhasenha na caixa txtPwd. Clique em Sem Turning desativado interromper em todos os erros e observe que você recebe a seguinte mensagem de erro em tempo de execução, mesmo que seu código manipula erros:
    Erro em tempo de execução '3029':
    Não um nome válido de conta ou senha.
    Clique em end em resposta à mensagem de erro.
  11. Clique em Turning logoff quebra em todos os erros . Observe que a rotina de manipulação de erro produz a seguinte mensagem:
    Não o direito UserName ou senha, Usuário1, se esse é seu nome real!

Referências

Para obter mais informações sobre os métodos GetOption e SetOption, no Editor do Visual Basic, clique em Ajuda do Microsoft Visual Basic no menu Ajuda , digite GetOption e SetOption métodos no Assistente do Office ou no Assistente de resposta e, em seguida, clique em Pesquisar para exibir o tópico.

A informação contida neste artigo aplica-se a:
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbmt kbcode kbhowto kbprogramming KB209884 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: 209884  (http://support.microsoft.com/kb/209884/en-us/ )