錯誤(在 ForEachRecord 內,只有最外面的 ForEachRecord 記錄可以編輯或刪除。)當您在 Access 中執行 ForEachRecord 資料宏時

原始 KB 編號:  982781

徵狀

當您在 Microsoft Access 中執行 ForEachRecord 資料宏時,會收到下列訊息:

在 ForEachRecord 內,只可以編輯或刪除最外面 ForEachRecord 的記錄。

按一下 [確定] 後,您會看到 [宏單一步驟] 視窗會顯示問題宏的名稱,以及錯誤編號: 2950

此外,您無法在 ForEachRecord 資料宏的內環中使用 EditRecord 宏或 CreateRecord 宏。

原因

發生此問題的原因是,只有當執行下列 recordset 時,才支援 EditRecord 資料巨集指令和 DeleteRecord 資料宏動作:

  • 父 recordset。
  • 屬於父系/子關聯的最外面的 recordset。

這種限制是由設計所設計。 這是因為資料宏不是以交易方式嵌套,如果在 ForEachRecord 迴圈期間發生系統失敗,則會在重新開機資料庫時,以錯誤的點重新開機 ForEachRecord 迴圈。 此問題可能會導致在 Access 資料庫中輸入重複的值,或可能導致無意中引發其他宏。

因應措施

若要解決此問題,請變更資料宏,讓嵌套的 ForEachRecord 資料宏無法使用 EditRecord 巨集指令或 CreateRecord 動作。

其他相關資訊

「現象」一節中所述的錯誤也會列在 USysApplicationLog 的描述欄中。 不過,USysApplicationLog 中的錯誤號碼可能不同。