在基于多表视图的窗体中编辑记录,并且在多用户环境中工作时,尝试保存对记录所做的更改可能会失败。 还可以在 “写入冲突 ”对话框中收到以下错误消息:

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

如果在 “写入冲突 ”对话框中单击“ 复制到剪贴板 ”或 “删除更改 ”,你可能会注意到,对记录所做的更改已撤消,并且其他用户对记录所做的更改现在可见。 但是,如果再次编辑同一条记录,并且尝试保存记录,则可能会再次收到“症状”部分中提到的错误消息。

单击“ 保存记录 ”时,可能还会注意到“症状”部分中断断续续地提到的错误消息。

使用 Microsoft Access 2000 时,可能不会看到此行为。

若要解决此问题,请使用以下方法之一:

  • 更新基于多表视图的表单

    在“症状”部分中提到的错误消息的第一次出现时,必须在“ 写入冲突 ”对话框中单击“ 复制到剪贴板 ”或 “删除更改 ”。 若要避免“症状”部分中提到的错误消息重复出现,必须先更新窗体中的记录集,然后才能再次编辑同一条记录。

  • 若要在 Access 2003 或 Access 2002 中更新窗体,请单击 “记录 ”菜单上的 “刷新 ”。
  • 若要在 Access 2007 中更新窗体,请单击“ 开始 ”选项卡上的 “记录 ”组中的 “全部刷新 ”。
  • 将主窗体与链接的子窗体配合使用

    若要避免重复出现“症状”部分中提到的错误消息,可以使用包含链接子窗体的主窗体在相关表中输入数据。 可以从一个位置在两个表中输入记录,而无需使用基于多表视图的窗体。

    若要创建包含链接子窗体的主窗体,请执行以下步骤:

  • 创建基于多表视图中使用的相关 (子表) 表的新窗体。 在窗体上包含所需的字段。

  • 保存窗体,然后关闭窗体。

  • 创建基于多表视图中使用的主表的新窗体。 在窗体上包含所需的字段。

  • 在“数据库”窗口中,将步骤 2 中保存的窗体添加到主窗体。

    这会创建一个子窗体。

  • 链接子字段 属性和子窗体的 Link Master Fields 属性设置为用于链接表的字段或字段的名称。

    Microsoft 已确认这是“适用于”部分中列出的 Microsoft 产品中的 bug。

    在多用户环境中,Microsoft Access 项目 (.adp) 使用一种名为 乐观记录锁定 的技术来处理记录争用。 因此,当多个用户同时使用同一记录时,其中一个用户可能会收到“症状”部分中提到的错误消息。 但是,当以下所有条件都为 true 时,“症状”部分中提到的错误消息也可能断断续续地出现:

  • 该窗体基于多表视图。
  • 多表视图基于父子关系中涉及的表。
  • 自您开始编辑记录以来,正在编辑的记录已被另一个用户更改并提交。
  • 你可能会注意到,在多用户环境中直接使用多表视图时,也会出现同样的问题。

    重现问题的步骤

  • 启动访问。

  • 打开 NorthwindCS.adp 示例数据库项目。

  • 在“数据库”窗口中,单击 “对象 ”部分中的 查询

    在 Access 2007 中,单击 “创建” 选项卡上 “其他 组中的 查询向导 ”。

  • 在右窗格中,双击 设计器中的“创建”视图

    在 Access 2007 的 “新建查询” 对话框中,单击 “设计视图 ”,然后单击 “确定 ”。

  • “添加表 ”对话框中,双击“ ”选项卡上的“ 订单 ”和“订单详细信息 ”,然后单击“ 关闭 ”。

  • 在 SQL 窗格中键入或粘贴以下查询:

    SELECT     
    dbo.Orders.OrderID, 
    dbo.[Order Details].ProductID, 
    dbo.[Order Details].Quantity, 
    dbo.Orders.ShipName
    dbo.Orders 
    INNER JOIN
    dbo.[Order Details] 
    dbo.Orders.OrderID = dbo.[Order Details].OrderID
    
  • 在 Access 2003 或 Access 2002 中,如果 SQL 窗格不可见,请指向“视图”菜单上的“显示窗格”,然后单击“SQL”。
  • 在 Access 2007 的“设计”选项卡上,单击“工具”组中的 SQL 以打开 SQL 窗格。
  • 将视图保存为OrderView。

  • “视图 ”菜单上,单击 “数据表视图”。

    在 Access 2007 的“ 设计 ”选项卡上,单击 “视图”下的箭头,然后单击 “数据表视图”。

  • 在 OrderView 视图中编辑记录。

    确保记录尚未保存。

  • 打开 NorthwindCS.adp 示例数据库项目的另一个实例。

  • 编辑在步骤 9 中编辑的同一记录。

  • “记录” 菜单上,单击 “保存记录”。

    在 Access 2007 中,单击 Microsoft Office 按钮,然后单击 “保存”。

    你可能会收到“症状”部分中提到的错误消息。

  •