本文將告訴您,如何關閉的
在所有錯誤都中斷 選項在 Visual Basic 應用程式程式碼,以防止使用者干擾您的錯誤處理常式。
如果以 [
在所有錯誤都中斷] 選項處於開啟狀態在 Access 中的使用者共用資料庫,您的程式碼會包含錯誤處理常式,,即使執行階段錯誤會導致您的程式碼以中止並開啟包含錯誤的模組。如果您不要使用者處理執行時期錯誤,您可以建立擱置
上所有錯誤都中斷] 選項,當您的程式碼執行時的程序。
Microsoft 僅,為了說明提供程式設計範例,不提供任何明示或默示的保證。這包括,但不限於適售性或適合某特定用途之默示擔保責任。本文假設您已熟悉使用我們所示範的程式設計語言以及建立和偵錯程序所使用的工具。Microsoft 技術支援工程師可以協助解釋特定程序的功能,但它們不會修改這些範例以提供附加功能或建構程序,以符合您特定需求。
範例程序來暫停和繼續 「 上所有的錯誤中斷 」 選項
您可以使用您自己的資料庫中的下列範例程序暫時擱置
上所有錯誤都中斷] 選項。請注意這些程序的運作,
在所有錯誤都中斷] 選項已設定。您可以在您的程式碼中包含它們為新增的防護來對抗公開 (Expose) 執行階段錯誤:
- 建立模組,宣告區段中,請輸入下面這一行:
Dim varOldBOAEOptions As Variant
- 鍵入下列程序:
'-----------------------------------------------------------------
' 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
- 將模組儲存為 basErrHandling。
- 當您要確保所 上所有錯誤都中斷 」 選項不會不中斷您的程式碼執行、 SuspendBreaks 程序呼叫的程式碼開頭及 ResumeBreaks 程序呼叫結束時。例如:
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
顯示不同的 「 上所有的錯誤中斷 」 設定的結果的範例
在下列範例中,示範了包含錯誤處理常式的程式碼會執行
所有錯誤都中斷] 選項處於開啟狀態時,會發生什麼事。
注意: 本文中的範例程式碼會使用 Microsoft 資料存取物件。這個程式碼正常執行,您必須參考 Microsoft DAO 3.6 物件程式庫。以執行這項操作,按一下
引用項目 在 [
工具] 功能表中 Visual Basic 編輯器] 中,請確定已選取
Microsoft DAO 3.6 物件程式庫] 核取方塊。
- 啟動 Microsoft Access,並建立一個新的空白資料庫,稱為 MyError.mdb。
- 請遵循步驟 1 到 3 來建立程序可暫止並繼續 在所有錯誤都中斷] 選項的前一節。
- 建立新的表單不根據任何資料表或在 [設計] 檢視中的查詢:
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]
- 在 [檢視] 功能表上按一下 [程式碼,] 然後輸入下列的程序:
'---------------------------------------------------------------
' 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
- 按一下 [工具] 功能表 選項。
- 在 [選項] 對話方塊中按一下 [一般] 索引標籤,然後按一下 [在所有錯誤都中斷]。按一下 [確定]。
- 在 [檔案] 功能表上按一下 [關閉],Microsoft Access 的 [返回]。
- 儲存 frmTestErrors 表單並關閉它。
- 在表單檢視中開啟 frmTestErrors 表單。
- 輸入 [在 txtUName] 方塊的 [User1,然後在 [txtPwd 方塊中輸入 MyPassword。按一下 [但不開啟關閉所有錯誤都中斷],並請注意您會收到下列的執行階段錯誤訊息,即使您的程式碼處理的錯誤:
執行階段錯誤 '3029':
不正確的帳戶名稱或密碼。
以回應錯誤訊息,請按一下 [結束]。 - 按一下 [開啟關在所有錯誤都中斷]。請注意您的錯誤處理常式會產生下列訊息:
不是正確的使用者名稱或密碼 User1 如果該是真實名稱!
如需有關 GetOption 和 SetOption 方法,在 Visual Basic 編輯器] 中,按一下 [
說明] 功能表上的 [
Microsoft Visual Basic 說明],並在 「 Office 小幫手 」 或 「 解答精靈 」 中輸入
GetOption SetOption 方法 再按一下 [
搜尋] 以檢視主題。