2012-05-02 111 views
1

我的問題是如何控制源屬性和在occurence順序方面相互關聯的更新後事件?哪一個首先發生? 我想有一個MsgBox要求用戶確認,如果他想拯救他只是在textbox.The文本框中輸入數據有控制源prpoerty設置一些field.If用戶取消的動作,他進入了不應該得到的文本保存。 如果我將msgbox放在文本框的OnChange事件中,現在提示用戶確認數據輸入是否太早了? 注意:控制源是日期類型的字段。控制源何時將數據保存在數據庫中?

+0

還是在更新前的事件? – user1175126

回答

1

控件是不是真的直接相關的變化,前或更新後的事件。

你需要使用的事件是前事件。

Private Sub txtFirstName_BeforeUpdate(Cancel as Integer) 
    If MsgBox("Are you sure you want to save this data?", vbYesNo, "Um...") = vbNo Then 
     Cancel = True 
    End If 
End Sub 

我想補充一點,在大多數情況下,最好使用窗體的BeforeUpdate事件來驗證的事情,而不是做它在控制的前事件,僅僅是因爲它更趨於人性化。表單的BeforeUpdate事件與上面發佈的代碼的作用方式相同。

而且,在驗證程序使用MSGBOX是像大多數人那樣,但它真的不認爲一個好的設計。最好有一個文本框或標籤,您可以使用它來輸出驗證消息,然後也可以播放聲音,以便用戶知道他們輸入的數據無效。

+0

當用戶單擊否時,我得到運行時錯誤,指向寫入recalc的代碼行。 – user1175126

+0

您可能需要在AfterUpdate事件上運行ReCalc。如果用戶在BeforeUpdate代碼中單擊否,AfterUpdate將不會觸發。 – HK1

+0

ReCalc已經在同一個texbox的afterupdate事件中。 – user1175126