关闭 Access 中的窗体时,会发生意外的写入冲突错误

中等:需要基本的宏、编码和互操作性技能。本文适用于 Microsoft 访问数据库 (.mdb) 和 Microsoft 访问项目 (.adp)。

症状

当您编辑使用多个具有相同记录源的窗体的数据时,您可能会收到以下错误消息:

自您开始编辑此记录以来,其他用户已更改该记录。如果保存记录,将覆盖其他用户所做的更改。 将更改复制到剪贴板将允许您查看其他用户输入的值,然后在决定进行更改时将更改粘贴回。

然后,您可以单击以下三个按钮之一:

  • 保存记录

  • 复制到剪贴板

  • 删除更改

原因

当您打开两个同时更新同一数据源的窗体时,将发生此行为。第一个窗体在记录或记录上放置编辑锁,然后第二个窗体更改记录或记录并保存更改。当第一个窗体尝试关闭并写回表时,将检测到第二个窗体所做的更改。这将导致返回错误。

解决方案

要解决此问题,请使用为 Microsoft Access 数据库 (.mdb) 文件列出的两种方法之一,或者使用 Access 项目 (.adp) 文件列出的方法之一。

对于微软访问数据库 (.mdb) 文件

方法 1

将窗体的"记录锁定"属性设置为"已编辑的记录"。为此,请按照以下步骤操作:

  1. 在"设计视图"中打开窗体。备注在 Access 2007 中,转到步骤 3。

  2. 在"视图"菜单上,单击"属性"。

  3. 在"数据"选项卡上,将"记录锁定"属性更改为"已编辑的记录"。

方法 2

将代码添加到两个窗体的 OnDeactivate 事件过程以保存记录。为此,请按照以下步骤操作:

  1. 在"设计视图"中打开窗体。备注在 Access 2007 中,转到步骤 4。

  2. 在"视图"菜单上,单击"属性"。

  3. 在"编辑"菜单上,单击"选择窗体"。

  4. 在"事件"选项卡上,右键单击On 停用属性框中,然后单击"生成"。

  5. 在"选择生成器"框中,单击"代码生成器",然后单击"确定"。

  6. 键入或粘贴以下代码:

    DoCmd.RunCommand acCmdSaveRecord
  7. 在"设计"视图中打开第二个窗体,然后重复步骤 2 到 6。

对于微软访问项目 (.adp) 文件:

将代码添加到两个窗体的 OnDeactivate 和 OnActivate 事件过程以保存记录。为此,请按照以下步骤操作:

  1. 在"设计视图"中打开窗体。备注在 Access 2007 中,转到步骤 4。

  2. 在"视图"菜单上,单击"属性"。

  3. 在"编辑"菜单上,单击"选择窗体"。

  4. 在"事件"选项卡上,右键单击On 停用属性框中,然后单击"生成"。

  5. 在"选择生成器"框中,单击"代码生成器",然后单击"确定"。

  6. 键入或粘贴以下代码:

    DoCmd.RunCommand acCmdSaveRecord
  7. 在"文件"菜单上,单击"关闭"并返回到"微软访问"。

  8. 在"事件"选项卡上,右键单击OnActivate属性框中,然后单击"生成"。

  9. 在"选择生成器"框中,单击"代码生成器",然后单击"确定"。

  10. 键入或粘贴以下代码:注意本文中的示例代码使用 Microsoft ActiveX 数据对象。要正确运行此代码,必须引用 Microsoft ActiveX 数据对象 2.x 库(其中 2.x 为 2.1 或更高版本)。为此,请单击"可视化基本编辑器"中的"工具"菜单上的"参考",并确保选中Microsoft ActiveX 数据对象 2.x 库复选框。

    Dim rs As ADODB.RecordsetSet rs = Me.Recordset.Cloners.Bookmark = Me.BookmarkDoCmd.RunCommand acCmdRefreshMe.Bookmark = rs.Bookmarkrs.CloseSet rs = Nothing
  11. 在"设计"视图中打开第二个窗体,然后重复步骤 2 到 10。

更多信息

在 Access 2003 中重现行为的步骤

  1. 打开访问。

  2. 在"帮助"菜单上,指向示例数据库,然后单击"北风示例数据库"。

  3. 在"数据库"窗口中,单击"对象"下的"表",然后单击"员工"表。

  4. 在"插入"菜单上,单击"自动填写"。

  5. 将表单另存为frmNew 员工。

  6. 打开"员工"窗体,然后将"名字"字段更改为"南希1"。

  7. 打开 frmNew 雇员窗体,然后将"名字"字段更改为Nancy2。

  8. 关闭 frmNew 员工窗体。

  9. 关闭"员工"窗体。请注意,您会收到本文"症状"部分中提到的"写入冲突"消息。

有关其他信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:

304181关闭窗体时意外写入冲突错误

280730 ACC2000:当您尝试更新链接的 SQL Server 表中的记录时写入冲突错误

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×