2011-08-23 113 views
2

我有一個MS-Access窗體,其中有3級嵌套窗體。第二種形式有兩個文本框 - 名字和姓氏。出於某種奇怪的原因,只要用戶開始輸入名字,表單就會嘗試觸發保存。攔截Microsoft Access中的自動保存

如何確定保存觸發的位置?

我把一個Form_BeforeInsert處理程序,我可以在那裏攔截,但調用堆棧並不表明事件是從哪裏觸發的。

任何想法?

回答

2

當您將焦點從父窗體上的控件切換到子窗體上的控件時,如果其任何綁定控件包含未保存的值,該焦點切換將觸發父窗體的當前記錄的保存。我不認爲有任何方法可以阻止或推遲這種行爲。您必須允許記錄保存或放棄更改。您可以攔截Before Update事件之前的表單以詢問用戶是否保存或放棄,如@woliveirajr建議的那樣。你可以爲Before Insert事件做同樣的事情。

1

http://help.lockergnome.com/office2/Disable-AutoSave-MS-Access--ftopict149090.html

通過「自動保存」,你的意思是記錄被保存,當您更改焦點 再創紀錄?如果是這樣,那麼就沒有內置的方法來「關閉」。 然而,這是很容易把一些代碼在窗體的BeforeUpdate事件:

If MsgBox("Do you want to save changes?", vbYesNo) = vbNo Then 
Cancel = True 
Me.Undo 
End If 

也許你不想詢問用戶如何保存它,所以Me.Undo線將做到這一點。