文章編號: 209884 - 上次校閱: 2006年10月11日 - 版次: 3.2

ACC2000: 如何關閉 「 中斷在所有錯誤 」 的選項,在程式碼中

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
進階: 須具備專家編碼、 互通性,與多使用者技能。

在此頁中

全部展開 | 全部摺疊

結論

本文將告訴您,如何關閉的 在所有錯誤都中斷 選項在 Visual Basic 應用程式程式碼,以防止使用者干擾您的錯誤處理常式。

其他相關資訊

如果以 [在所有錯誤都中斷] 選項處於開啟狀態在 Access 中的使用者共用資料庫,您的程式碼會包含錯誤處理常式,,即使執行階段錯誤會導致您的程式碼以中止並開啟包含錯誤的模組。如果您不要使用者處理執行時期錯誤,您可以建立擱置 上所有錯誤都中斷] 選項,當您的程式碼執行時的程序。

Microsoft 僅,為了說明提供程式設計範例,不提供任何明示或默示的保證。這包括,但不限於適售性或適合某特定用途之默示擔保責任。本文假設您已熟悉使用我們所示範的程式設計語言以及建立和偵錯程序所使用的工具。Microsoft 技術支援工程師可以協助解釋特定程序的功能,但它們不會修改這些範例以提供附加功能或建構程序,以符合您特定需求。

範例程序來暫停和繼續 「 上所有的錯誤中斷 」 選項

您可以使用您自己的資料庫中的下列範例程序暫時擱置 上所有錯誤都中斷] 選項。請注意這些程序的運作,在所有錯誤都中斷] 選項已設定。您可以在您的程式碼中包含它們為新增的防護來對抗公開 (Expose) 執行階段錯誤:
  1. 建立模組,宣告區段中,請輸入下面這一行:
    Dim varOldBOAEOptions As Variant
    					
  2. 鍵入下列程序:
    '-----------------------------------------------------------------
    ' 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. 將模組儲存為 basErrHandling。
  4. 當您要確保所 上所有錯誤都中斷 」 選項不會不中斷您的程式碼執行、 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 物件程式庫] 核取方塊。

  1. 啟動 Microsoft Access,並建立一個新的空白資料庫,稱為 MyError.mdb。
  2. 請遵循步驟 1 到 3 來建立程序可暫止並繼續 在所有錯誤都中斷] 選項的前一節。
  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]
    					
  4. 在 [檢視] 功能表上按一下 [程式碼,] 然後輸入下列的程序:
    '---------------------------------------------------------------
    ' 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. 按一下 [工具] 功能表 選項
  6. 在 [選項] 對話方塊中按一下 [一般] 索引標籤,然後按一下 [在所有錯誤都中斷]。按一下 [確定]
  7. 在 [檔案] 功能表上按一下 [關閉],Microsoft Access 的 [返回]。
  8. 儲存 frmTestErrors 表單並關閉它。
  9. 在表單檢視中開啟 frmTestErrors 表單。
  10. 輸入 [在 txtUName] 方塊的 [User1,然後在 [txtPwd 方塊中輸入 MyPassword。按一下 [但不開啟關閉所有錯誤都中斷],並請注意您會收到下列的執行階段錯誤訊息,即使您的程式碼處理的錯誤:
    執行階段錯誤 '3029':
    不正確的帳戶名稱或密碼。
    以回應錯誤訊息,請按一下 [結束]。
  11. 按一下 [開啟關在所有錯誤都中斷]。請注意您的錯誤處理常式會產生下列訊息:
    不是正確的使用者名稱或密碼 User1 如果該是真實名稱!

?考

如需有關 GetOption 和 SetOption 方法,在 Visual Basic 編輯器] 中,按一下 [說明] 功能表上的 [Microsoft Visual Basic 說明],並在 「 Office 小幫手 」 或 「 解答精靈 」 中輸入 GetOption SetOption 方法 再按一下 [搜尋] 以檢視主題。

這篇文章中的資訊適用於:
  • Microsoft Access 2000 Standard Edition
關鍵字:?
kbmt kbcode kbhowto kbprogramming KB209884 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:209884? (http://support.microsoft.com/kb/209884/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。