Access培訓
網站公告
·Access快速平臺QQ群號:84825014    ·Access快速開發平臺下載地址及教程    ·歡迎添加微信交流賬號:AccessoftChu    ·如何快速搜索本站文章|示例|資料    
您的位置: 首頁 > 技術文章 > Access數據庫-窗體/數據頁

一種適合新手理解的解決數據綁定窗體關閉時不保存修改數據的方法

時 間:2019-11-03 08:01:25
作 者:朱朱   ID:8813  城市:上海
摘 要:本文介紹了一種適合新手理解的解決數據綁定窗體關閉時不保存修改數據的方法。
正 文:

      Access的窗體如果綁定數據的話,則對記錄的增與改都是相當方便的。一般來說一個這樣的窗體通常會新增數據與編輯數據共用,其采用動態集綁定某張數據表。但這里也有一個問題,無論新增還是編輯了某條記錄,如果已經修改了一定的數據中途想放棄新增或者編輯的話,關閉窗體后,Access還是會將數據保存到表中,這顯然不是我們想得到的結果。

      通過進一步的窗體的學習可以知道,Access窗體有個Dirty事件,通過對Dirty進行判斷可以達到在窗體關閉時對已經編輯的數據不保存。不過這個Dirty對于新手來說,理解起來可能有一點點不太友好。本文就嘗試用一種較易理解的方式來解決這個問題。本文采用的示例是Access軟件網職場范例中的一個示例,稍稍作了一定的修改。

      首先在編輯窗體(frm供應商資料_Edit)代碼中定義一個變量:Dim bSaveFlag As Boolean,注意變量的位置,具體可以看示例。


附   件:

點擊下載此附件


    在窗體的Load事件中,先將其值設置成False

    Private Sub Form_Load()
        bSaveFlag = False
    End Sub

    在保存按鈕里面,DoCmd.RunCommand acCmdSave這句代碼前設置其值為Ture

    bSaveFlag = True
    DoCmd.RunCommand acCmdSave


    最后是在窗體的BeforeUpdate事件中進行判斷

    Private Sub Form_BeforeUpdate(Cancel As Integer)
        If bSaveFlag = False Then
            Cancel = True
        End If
    End Sub


      這樣之后,無論新增還是編輯,如果中途想放棄,關閉窗體后就都不會保存數據了。

      現在來講解一下實現的原理。定義這個變量之后,在窗體的Load事件中先將其設為False,如果確實要保存數據,點擊了保存按鈕,則其值再設置為True,則可以正常保存數據。 如果修改了部分數據,中途想要關閉窗體,則都會觸發窗體的BeforeUpdate事件,那么就可以在這個事件中進行判斷,如果bSaveFlag為False則表示不希望保存數據,則設置參數Cancel為Ture,這樣修改的數據就不會被保存了。這樣也就達到了修改了記錄但關閉窗體不保存的目的。



Access軟件網官方交流QQ群 (群號:252407829)       access源碼網店

最新評論 查看更多評論(3)

2020/6/6 18:51:23冰山來客
感謝分享!

2019/11/3 19:34:22隕石襲海
感謝分享!

2019/11/2 14:54:43羅先生
這個真好,學習了

發表評論您的評論將提升作者分享的動力!快來評論一下吧!

用戶名:
密 碼:
內 容:
 

常見問答

技術分類

相關資源

關于我們 | 服務條款 | 在線投稿 | 友情鏈接 | 網站統計 | 網站幫助