中等: 需要基本巨集、 編碼和交互操作性技巧。這篇文章可套用於 Microsoft Access 資料庫 (.mdb) 和 Microsoft Access 專案 (.adp)。
徵狀
當您編輯使用具有相同的記錄來源的多個表單的資料時,您可能會收到下列錯誤訊息:
這筆記錄已變更另一位使用者,自您開始編輯它。如果您儲存記錄時,您將會覆寫所做的變更所做的其他使用者。 變更複製到剪貼簿,可讓您查看其他使用者輸入,並貼上您的變更上一步中,如果您決定要進行變更的值。
接著,您可以按一下下列三個按鈕之一:
-
儲存記錄
-
複製到剪貼簿
-
放棄變更
原因
當您開啟兩個同時更新相同的資料來源的表單時,就會發生這個問題。第一個表單上的記錄,將編輯鎖定,然後第二個表單的變更記錄的記錄或位置,並儲存所作的變更。當第一個表單會嘗試關閉,並寫回至資料表時,第二個表單所做的變更將會偵測到。這會導致傳回錯誤。
解決方案
要解決這個問題,請使用其中一種方法中,列出 Microsoft Access 資料庫 (.mdb) 檔案或 Access 專案 (.adp) 檔所列的方法。
Microsoft Access 資料庫 (.mdb) 檔案
方法 1
將表單的RecordLocks屬性設定為 [編輯記錄。若要這麼做,請依照下列步驟執行:
-
在 [設計] 檢視中開啟表單。附註在 Access 2007 中,移至步驟 3。
-
按一下 [檢視] 功能表上的 [內容]。
-
在 [資料] 索引標籤中,變更 [記錄鎖定] 屬性為 [編輯記錄。
方法 2
若要儲存記錄這兩種形式的 OnDeactivate 事件程序中加入程式碼。若要這麼做,請依照下列步驟執行:
-
在 [設計] 檢視中開啟表單。附註在 Access 2007 中,請前往步驟 4。
-
按一下 [檢視] 功能表上的 [內容]。
-
按一下 [編輯] 功能表上的 [選取表單]。
-
在 [事件] 索引標籤中,在 [ OnDeactivate ] 屬性方塊中,按一下滑鼠右鍵,然後按一下 [建置。
-
在 [選擇建立幫手] 方塊中,按一下 [程式碼建立幫手,,然後按一下[確定]。
-
輸入或貼上下列程式碼:
DoCmd.RunCommand acCmdSaveRecord
-
在設計檢視中開啟第二個表單,並重複步驟 2 到 6。
Microsoft Access 專案 (.adp) 檔案:
加入兩個表單儲存記錄的 OnDeactivate,並使用 OnActivate 事件程序中的程式碼。若要這麼做,請依照下列步驟執行:
-
在 [設計] 檢視中開啟表單。附註在 Access 2007 中,請前往步驟 4。
-
按一下 [檢視] 功能表上的 [內容]。
-
按一下 [編輯] 功能表上的 [選取表單]。
-
在 [事件] 索引標籤中,在 [ OnDeactivate ] 屬性方塊中,按一下滑鼠右鍵,然後按一下 [建置。
-
在 [選擇建立幫手] 方塊中,按一下 [程式碼建立幫手,,然後按一下[確定]。
-
輸入或貼上下列程式碼:
DoCmd.RunCommand acCmdSaveRecord
-
在 [檔案] 功能表中,按一下 [關閉並返回到 [Microsoft Access。
-
在 [事件] 索引標籤中,在使用 OnActivate屬性方塊中,按一下滑鼠右鍵,然後按一下 [建置。
-
在 [選擇建立幫手] 方塊中,按一下 [程式碼建立幫手,,然後按一下[確定]。
-
輸入或貼上下列程式碼:注意本文中的程式碼範例會使用 Microsoft ActiveX 資料物件。若要正確執行這個程式碼,您必須參考 Microsoft ActiveX 資料物件 2.x (其中 2.x 是 2.1 或更新版本) 的程式庫。若要這麼做,請按一下在 Visual Basic 編輯器] 中的 [工具] 功能表上的 [參考,並確定Microsoft ActiveX 資料物件程式庫 2.x在選取核取方塊。
Dim rs As ADODB.RecordsetSet rs = Me.Recordset.Cloners.Bookmark = Me.BookmarkDoCmd.RunCommand acCmdRefreshMe.Bookmark = rs.Bookmarkrs.CloseSet rs = Nothing
-
在 [設計] 檢視中,開啟第二個表單,然後重複步驟 2 到 10。
其他相關資訊
若要重現這個問題,在 Access 2003 中的步驟
-
開啟 [存取]。
-
在 [說明] 功能表上,指向範本資料庫],然後按一下 [北風樣本資料庫。
-
在 [資料庫] 視窗中,按一下 [物件] 下的 [資料表,然後按一下 [員工] 資料表。
-
按一下 [插入] 功能表的 [自動產生表單]。
-
將表單儲存為frmNewEmployees中。
-
開啟 [員工] 表單,然後將 [名字] 欄位變更為Nancy1。
-
開啟 [frmNewEmployees] 表單,然後將 [名字] 欄位變更為Nancy2。
-
關閉 [frmNewEmployees] 表單。
-
關閉 [員工] 表單。請注意,您會收到本文 < 徵狀=""> 一節所述的 「 寫入衝突 」 訊息。
如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
304181的非預期的寫入衝突錯誤當您關閉表單
280730 ACC2000: 當您嘗試更新連結的 SQL Server 資料表中的資料錄時,寫入衝突錯誤