2012-10-15 65 views
1

如何在用戶退出應用程序時放棄表單的內容?如果用戶通過按鈕關閉表單(例如返回到主表單),則可以通過Me.Undo來實現。但是,如果他關閉了整個應用程序,則當前內容將被輸入到不符合預期的對照表中。
我也嘗試了on Closeon Unload事件,這兩個事件在應用程序關閉時都未觸發。如何在MS Access中退出應用程序退出時的表單內容?

編輯:on Close事件顯示奇怪的行爲。 A MsgBox正在執行,但Me.Undo確實無法正常工作。 (當點擊X來退出應用程序時,可能會在事件發生之前將表格內容輸入到表格中)

回答

1

關閉窗體會自動觸發保存對綁定控件的值進行的掛起更改。您無法從表單卸載或關閉事件來攔截該操作。我可以找到從窗體的更新前攔截它在所有然後插入事件的唯一辦法:

Dim SaveFlag As Boolean 

Private Sub Form_BeforeUpdate(Cancel As Integer) 
    If Me.Dirty = True And SaveFlag = False Then 
     Me.Undo 
    End If 
End Sub 

你需要做的插入之前類似。而且您需要以某種方式管理SaveFlag,以便在您希望保存更改時實際保存更改。

Private Sub cmdSave_Click() 
    SaveFlag = True 
    Me.Dirty = False 
    SaveFlag = False 
End Sub 

但是,如果你想訪問的默認行爲,如自動保存更改記錄或之間進行導航時,主副格式之間切換焦點時,這種做法是不適合的。

如果您非常需要此功能,則可以切換到未綁定的數據控件,並且只有在明確命令它發生時才保存它們的值。但是這會增加很多額外的工作,我不知道這是否值得付出努力。我會試圖將此視爲用戶教育問題。 「請注意,如果您關閉了應用程序中未保存的表單更改,將會爲您保存更改。

+0

我想我必須編寫一些用戶指令,然後:) – rob