文章編號: 248011 - 上次校閱: 2005年6月23日 - 版次: 2.0

ACC2000: 如何控制結合表單在 Access 資料庫中的交易

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
進階: 須具備專家編碼、 互通性,與多使用者技能。

本文只適用於 Microsoft Access 資料庫 (.mdb)。

在此頁中

全部展開 | 全部摺疊

結論

本文將告訴您如何使用資料存取物件 (DAO) 來控制交易在 Microsoft Access (Jet) 資料庫中的資料表 (結合表單) 為基礎的表單中。

其他相關資訊

通常,開發人員必須要能夠讓資料庫應用程式認可所有的使用者或無其資料變更表單上。版本的 Access 版本的 2000年,您可以不將封裝在交易內的繫結表單上所做的資料變更。這是因為繫結表單中的所有交易已都處理的個別區,只可存取 Microsoft Access。

在 Microsoft Access 2000 不過,可以使用的資料存取物件 (DAO) 和新的組合,構成 資料錄集 屬性,以提供這項功能。本文中的範例假設使用者想要提示進行認可在使用者關閉表單時表單的資料所做的全部變更。到那個時候使用者可以認可的所有變更或完全沒有所做的變更。

Microsoft 僅,為了說明提供程式設計範例,不提供任何明示或默示的保證。這包括,但不限於適售性或適合某特定用途之默示擔保責任。本文假設您已熟悉使用我們所示範的程式設計語言以及建立和偵錯程序所使用的工具。Microsoft 技術支援工程師可以協助解釋特定程序的功能,但它們不會修改這些範例以提供附加功能或建構程序,以符合您特定需求。注意: 本文中的範例程式碼會使用 Microsoft 資料存取物件。這個程式碼正常執行,您必須參考 Microsoft DAO 3.6 物件程式庫。以執行這項操作,按一下 引用項目 在 [工具] 功能表中 Visual Basic 編輯器] 中,請確定已選取 Microsoft DAO 3.6 物件程式庫] 核取方塊。

注意: 此範例設計來搭配單一主要表單。它不被設計來使用 [連結子表單。

控制繫結表單上的交易

  1. 開啟範例資料庫 Northwind.mdb。
  2. 建立 [客戶] 資料表為基礎的新表單。
  3. 將所有欄位都新增到表單的詳細資料區段。
  4. 在 [檢視] 功能表上按一下 [程式碼 以檢視該表單的模組,然後將下列程式碼加入至模組:
    Option Compare Database
    Option Explicit
    
    Private boolFrmDirty As Boolean
    Private boolFrmSaved As Boolean
    
    Private Sub Form_AfterDelConfirm(Status As Integer)
        If Me.Saved = False Then Me.Saved = (Status = acDeleteOK)
    End Sub
    
    Private Sub Form_AfterUpdate()
        Me.Saved = True
    End Sub
    
    Private Sub Form_Delete(Cancel As Integer)
        If Me.Dirtied = False Then DBEngine.BeginTrans
        Me.Dirtied = True
    End Sub
    
    Private Sub Form_Dirty(Cancel As Integer)
        If Me.Dirtied = False Then DBEngine.BeginTrans
        Me.Dirtied = True
    End Sub
    
    Private Sub Form_Open(Cancel As Integer)
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
        Set db = CurrentDb
        Set rs = db.OpenRecordset("SELECT * FROM Customers", dbOpenDynaset)
        Set Me.Recordset = rs
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
        Dim msg As Integer
        If Me.Saved Then
            msg = MsgBox("Do you want to commit all changes?", vbYesNoCancel)
            Select Case msg
                Case vbYes
                    DBEngine.CommitTrans
                Case vbNo
                    DBEngine.Rollback
                Case vbCancel
                    Cancel = True
            End Select
        Else
            If Me.Dirtied Then DBEngine.Rollback
        End If
    End Sub
    
    Public Property Get Dirtied() As Boolean
        Dirtied = boolFrmDirty
    End Property
    
    Public Property Let Dirtied(boolFrmDirtyIn As Boolean)
        boolFrmDirty = boolFrmDirtyIn
    End Property
    
    Public Property Get Saved() As Boolean
        Saved = boolFrmSaved
    End Property
    
    Public Property Let Saved(boolFrmSavedIn As Boolean)
        boolFrmSaved = boolFrmSavedIn
    End Property
    					
  5. 偵錯] 功能表上按一下 [編譯北風]。
  6. 按一下 [檔案] 功能表 儲存北風貿易
  7. 當系統提示您將表單儲存為 frmCustomers。
  8. 在表單檢視中開啟 frmCustomers 表單。請注意表單會填入資料。
  9. 透過編輯既有的記錄、 插入一些新的資料錄以及刪除一些記錄,請進行一些變更。
  10. 關閉表單。請注意將提示您是否您想要認可所有變更。
  11. 按一下 [否]。
  12. 在表單檢視中開啟表單。請注意沒有任何您在步驟 9 中對所作的變更已儲存到資料庫。
  13. 重複步驟 9 和 10。
  14. 當提示您認可所有變更時,按一下 [是]
  15. 在表單檢視中開啟表單。請注意您所做的所有變更已都儲存至資料庫。

這篇文章中的資訊適用於:
  • Microsoft Access 2000 Standard Edition
關鍵字:?
kbmt kbhowto KB248011 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:248011? (http://support.microsoft.com/kb/248011/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。