ACC: How to Turn Off "Break on All Errors" Option in Code

This article was previously published under Q167855
This article has been archived. It is offered "as is" and will no longer be updated.
Advanced: Requires expert coding, interoperability, and multiuser skills.

SUMMARY
This article shows you how to turn off the "Break on All Errors" option inVisual Basic for Applications code to prevent users from interrupting yourerror handling routines.

This article assumes that you are familiar with Visual Basic forApplications and with creating Microsoft Access applications using theprogramming tools provided with Microsoft Access. For more informationabout Visual Basic for Applications, please refer to your version of the"Building Applications with Microsoft Access" manual.
MORE INFORMATION
Even when your code contains error handling routines, if you share thedatabase with a user who has the "Break on All Errors" option turned on inMicrosoft Access, a run-time error causes your code to halt and open themodule containing the error. If you do not want users to handle your run-time errors, you can create procedures that suspend the "Break on AllErrors" option while your code is running.

Sample Procedures to Suspend and Resume the "Break on All Errors" Option

You can use the following sample procedures in your own database totemporarily suspend the "Break on All Errors" option. Note that theseprocedures work whether or not the "Break on All Errors" option is set; youcan include them in your code as added protection against exposing run-timeerrors:
  1. Create a module and type the following line in the Declarations section:
    Dim varOldBOAEOptions As Variant					
  2. Type the following procedures:
          '-----------------------------------------------------------------      ' Save the current setting for the "Break on All Errors" option      ' Turn off the "Break on All Errors" option.      '-----------------------------------------------------------------      Public Sub SuspendBreaks()      Select Case Application.SysCmd(acSysCmdAccessVer)         Case "7.0"            varOldBOAEOptions = GetOption("Break On All Errors")            SetOption "Break On All Errors", False         Case "8.0"            varOldBOAEOptions = GetOption("Error Trapping")            SetOption "Error Trapping", 2      End Select      End Sub      '-----------------------------------------------------------------      ' Restore the "Break on All Errors" settings that were temporarily      ' suspended by the SuspendBreaks procedure.      '-----------------------------------------------------------------      Public Sub ResumeBreaks()      Select Case Application.SysCmd(acSysCmdAccessVer)         Case "7.0"            If Not IsEmpty(varOldBOAEOptions) Then _               SetOption "Break On All Errors", varOldBOAEOptions         Case "8.0"            If Not IsEmpty(varOldBOAEOptions) Then _               SetOption "Error Trapping", varOldBOAEOptions      End Select      End Sub					
  3. Save the module as basErrHandling.
  4. When you want to ensure that the "Break on All Errors" option does not interrupt the running of your code, call the SuspendBreaks procedureat the beginning of your code, and call the ResumeBreaks procedure atthe end. For example:
          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					

Example Showing Results of Different "Break on All Errors" Settings

The following example demonstrates what happens when code that containserror handling routines runs with the Break On All Errors option turned on.
  1. Start Microsoft Access and create a new blank database called MyError.mdb.
  2. Follow steps 1 through 3 in the previous section to create the procedures that suspend and resume the "Break on All Errors" option.
  3. Create a new form not based on any table or query in Design view:
          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. On the View menu, click Code, and then type the following procedures:
          '---------------------------------------------------------------      ' 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 Workspace         Set ws = 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. Save the frmTestErrors form and close it. On the Tools menu, click Options.
  6. In the Options dialog box, click the Advanced tab (or the Module tab in version 7.0), and then click "Break on All Errors." Click OK.
  7. Open the frmTestErrors form in Form view.
  8. Type "User1" (without the quotation marks) in the txtUName box, and type "MyPassword" (without the quotation marks) in the txtPwd box. Click "Without Turning Off Break On All Errors," and note that you receive the following run-time error message, even though your code handles errors:
    Run-time error '3029':
    Not a valid account name or password.
    Click End in response to the error message.
  9. Click "Turning Off Break On All Errors." Note that your error handling routine produces the following message:
    Not the right UserName or Password, User1, if that is your realname!
REFERENCES
For more information about error handling, search the Help Index for "errorhandling," or refer to your Microsoft Access manual "Building Applicationswith Microsoft Access 97," Chapter 8, "Handling Run-Time Errors," pages235-254.

For more information about Break On All Errors, search the Help Index for"GetOption method" or "SetOption method."
BreakOnAllErrors BreakInClassModule BreakOnUnhandledErrors
Properties

Article ID: 167855 - Last Review: 03/04/2014 05:28:26 - Revision: 3.4

  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
  • kbnosurvey kbarchive kbcode kbhowto kbprogramming KB167855
Feedback