在基于多表视图的窗体中编辑记录,并且在多用户环境中工作时,尝试保存对记录所做的更改可能会失败。 还可以在
“写入冲突
”对话框中收到以下错误消息:
自您开始编辑此记录以来,其他用户已更改此记录。 如果保存记录,则会覆盖其他用户所做的更改。
将更改复制到剪贴板后,可以查看其他用户输入的值,然后在决定进行更改时将更改粘贴回来。
如果在
“写入冲突
”对话框中单击“
复制到剪贴板
”或
“删除更改
”,你可能会注意到,对记录所做的更改已撤消,并且其他用户对记录所做的更改现在可见。 但是,如果再次编辑同一条记录,并且尝试保存记录,则可能会再次收到“症状”部分中提到的错误消息。
单击“
保存记录
”时,可能还会注意到“症状”部分中断断续续地提到的错误消息。
使用 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 按钮,然后单击 “保存”。
你可能会收到“症状”部分中提到的错误消息。