閱讀英文

共用方式為


當您在 Access 中儲存已編輯的記錄時,發生「此記錄已由另一位用戶變更」錯誤

原始 KB 編號: 837937

注意

本文僅適用於 microsoft Access 專案 (.adp) 。 需要基本的巨集、編碼和互通性技能。

徵狀

當您以多數據表檢視為基礎的窗體編輯記錄,而且您在多用戶環境中工作時,當您嘗試將變更儲存至記錄時,可能會失敗。 您也可以在 [ 寫入衝突 ] 對話框中收到下列錯誤訊息:

自從您開始編輯此記錄之後,其他使用者已變更此記錄。 如果您儲存記錄,您將會覆寫其他使用者所做的變更。
將變更複製到剪貼簿可讓您查看其他使用者輸入的值,然後如果您決定進行變更,請將變更貼回 。

如果您在 [寫入衝突] 對話框中按兩下 [複製到剪貼簿] 或 [卸除變更],您可能會注意到您對記錄所做的變更已復原,而且現在可以看到其他使用者對記錄所做的變更。 不過,如果您再次編輯相同的記錄,並嘗試儲存記錄,您可能會再次收到「徵兆」一節中提及的錯誤訊息。

當您按兩下 [儲存 記錄] 時,您也可能會注意到[徵兆] 區段中所提及的錯誤訊息。

注意

當您使用 Microsoft Access 2000 時,可能不會看到此行為。

因應措施

若要解決此問題,請使用下列其中一種方法:

  • 更新以多重數據表檢視為基礎的表單

    在[徵兆] 區段中提及的錯誤訊息第一次出現時,您必須在 [寫入衝突] 對話框中按兩下 [複製到剪貼簿] 或 [卸除變更]。 若要避免重複出現「徵兆」一節中提及的錯誤訊息,您必須先更新窗體中的記錄集,才能再次編輯相同的記錄。

    附註

    • 若要更新 Access 2003 或 Access 2002 中的表單,請按兩下 [記錄] 選單上的 [ 重新 整理 ]
    • 若要更新 Access 2007 中的表單,請按兩下 [首頁] 索引卷標上 [記錄] 群組中的 [全部重新整理]。
  • 搭配連結的子表單使用主表單

    若要避免重複出現「徵兆」一節中提及的錯誤訊息,您可以使用主窗體搭配連結的子窗體,在相關數據表中輸入數據。 您可以從一個位置輸入這兩個數據表中的記錄,而不需要使用以多重數據表檢視為基礎的窗體。

    若要使用連結的子窗體建立主表單,請遵循下列步驟:

    1. 根據多重數據表檢視中使用的相關 (子) 數據表,建立新的表單。 在表單上包含必要的欄位。

    2. 儲存表單,然後關閉表單。

    3. 建立以多重數據表檢視中所使用之主數據表為基礎的新表體。 在表單上包含必要的欄位。

    4. 在 [資料庫] 視窗中,將您在步驟 2 中儲存的表單新增至主要表單。

      這會建立子窗體。

    5. 將子表單的 [連結子欄位 ] 屬性和 [連結主要 欄位] 屬性設定為用來連結資料表的欄位名稱。

狀態

Microsoft 已確認這是 Microsoft 產品中「適用於」一節中所列的錯誤。

其他相關資訊

在多用戶環境中,Microsoft Access 專案 (.adp) 使用名為 開放式記錄鎖定 的技術來處理記錄爭用。 因此,當多個用戶同時使用相同的記錄時,其中一個使用者可能會收到「徵兆」一節中所提及的錯誤訊息。 不過,當下列所有條件成立時,[徵兆] 區段中提及的錯誤訊息也可能間歇性地出現:

  • 表單是以多表檢視為基礎。
  • 多重數據表檢視是以父子式關聯性所涉及的數據表為基礎。
  • 自從您開始編輯記錄之後,正在編輯的記錄已變更並由另一位用戶認可。

您可能會注意到,當您直接在多用戶環境中使用多數據表檢視時,也會發生相同的問題。

重現問題的步驟

  1. 啟動存取。

  2. 開啟 NorthwindCS.adp 範例資料庫專案。

  3. 在 [資料庫] 視窗中,按兩下 [物件] 區段中的 [查詢]。

    注意

    在 Access 2007 中,按兩下 [建立] 索引標籤上 [其他] 群組中的 [查詢精靈]

  4. 在右窗格中,按兩下 [ 在設計工具中建立檢視]

    注意

    在 Access 2007 的 [ 新增查詢 ] 對話框中,按兩下 [ 設計檢視],然後按兩下 [ 確定]

  5. 在 [新增數據表] 對話框中,按兩下 [數據] 索引卷標上的 [訂單] 和 [訂單詳細數據],然後按兩下 [關閉]

  6. 在 [SQL] 窗格中輸入或貼上下列查詢:

    SELECT     
    dbo.Orders.OrderID, 
    dbo.[Order Details].ProductID, 
    dbo.[Order Details].Quantity, 
    dbo.Orders.ShipName
    FROM         
    dbo.Orders 
    INNER JOIN
    dbo.[Order Details] 
    ON 
    dbo.Orders.OrderID = dbo.[Order Details].OrderID
    

    附註

    注意

    • 在 Access 2003 或 Access 2002 中,如果看不到 SQL 窗格,請指向 [檢視] 功能表上的 [顯示窗格],然後按兩下 [SQL]
    • 在 Access 2007 的 [設計] 索引標籤上,按兩下 [工具] 群組中的 [SQL] 以開啟 [SQL] 窗格。
  7. 將檢視儲存為OrderView。

  8. 在 [ 檢視] 功能表上,按兩下 [資料工作表檢視]

    注意

    在 Access 2007 的 [ 設計] 索引 標籤上,按兩下 [ 檢視] 底下的箭號,然後按兩下 [資料工作表檢視]

  9. 在 OrderView 檢視中編輯記錄。

    注意

    請確定記錄尚未儲存。

  10. 開啟 NorthwindCS.adp 範例資料庫專案的另一個實例。

  11. 編輯您在步驟 9 中編輯的相同記錄。

  12. 在 [ 記錄] 功能表上,按兩下 [ 儲存記錄]

    注意

    在 Access 2007 中,按兩下 [Microsoft Office 按鈕],然後按兩下 [ 儲存]

    您可能會收到「徵兆」一節中提及的錯誤訊息。