2012-12-21 67 views
3

如果我沒有填寫表格中的所有必填字段,當點擊右上角的「x」時會出現一個難看的錯誤。 我想用自定義錯誤消息來覆蓋默認錯誤,但我無法弄清楚哪個VBA事件將此代碼關聯。當我把一個錯誤處理程序放在那裏時,Form_Close事件似乎不起作用。關閉表單時會觸發什麼VBA事件?

訪問2010

Private Sub Form_Unload(Cancel As Integer) 
On Error GoTo Err_Unload   ' Initialize error handling. 
    'insert routine 
Exit_Unload:      ' Label to resume after error. 
    Exit Sub      ' Exit before error handler. 
Err_Unload:      ' Label to jump to on error. 
    'MsgBox Err & " " & Error$ ' Place error handling here. 
    Resume Exit_Unload 
End Subenter code here 

即使在使用此代碼仍然會收到錯誤。

Private Sub Form_Unload(Cancel As Integer) 
On Error GoTo Err_Unload   ' Initialize error handling. 
    ' Code to do something here. 
Exit_Unload:       ' Label to resume after error. 
    Exit Sub     ' Exit before error handler. 
Err_Unload:       ' Label to jump to on error. 
    'MsgBox Err & " " & Error$   ' Place error handling here. 
    Resume Exit_Unload 
End Sub 
+1

如果您未填寫必填字段並嘗試關閉表單,則會在觸發任何表單事件(2007年確認)之前顯示醜陋的錯誤消息。爲了避免這種情況,您需要爲您的必填字段設置默認值或使用On Current事件來確定它們。只要確保在更新前的事件中檢查記錄以確保輸入值是可接受的。 –

回答

3

當您嘗試關閉窗體的當前記錄未保存的更改時,Access將首先嚐試提交這些更改。您無法從Form_UnloadForm_Close截取該動作。

順便說一句,雖然您沒有提及它,但如果您正在導航的記錄包含未保存的更改以及缺少所需字段的值,則在導航到其他記錄時,我會希望您看到相同的內容。

如果表單的記錄源包含帶自動編號字段的表格,請使用表單的before update事件來檢查是否存在必需的值。如果不涉及自動編號字段,請考慮在插入前和更新事件之前檢查表單。

但是,如果這一點的全部內容是在必填字段中找到缺少值的友好消息,請查看更改表格屬性是否令人滿意。例如,您可以將Required設置爲No,然後使用Is Not Null作爲字段的Validation Rule,這將允許您將友好文本信息指定爲字段的Validation Text屬性。

Table design Required and Validation properties

2

你可能想使用:

Private Sub Form_Unload(Cancel As Integer) 

End Sub 
+0

我仍然收到一個錯誤消息:「您必須在'tblOrder.OrderID'字段中輸入一個值。我在上面的問題中放置了我的代碼。 –

+3

您在做什麼?數據輸入?聽起來好像您有必需字段,並且你正在初始化一個記錄,撤銷可能對你有用,或者你可能想看看錶單錯誤事件,這會陷入驗證和關鍵字段錯誤等等,你可能還想詢問用戶是否想完成記錄或退出。 – Fionnuala

3

http://office.microsoft.com/en-us/access-help/order-of-events-for-database-objects-HP005186761.aspx

同樣,當你關閉窗體,事件 下列順序發生:

退出(控制)→LostFocus(控制)→Unload(表格)→Deactivate (f orm)→關閉(窗體)

如果您更改了控件中的數據,則控件和窗體的BeforeUpdate和AfterUpdate事件發生在控件的退出事件 之前。

什麼可能導致您的錯誤是BeforeUpdate事件,當表單試圖保存您的更改,但由於您沒有填寫必填字段而失敗。您可以創建一些驗證代碼並在表單的BeforeUpdate事件中運行它,以確保一切正常並向用戶發送適當的消息。

1

有實際上是一種形式事件調用On Error,它有兩個參數:錯誤是什麼,應該執行什麼反應訪問。

相關問題