如何克服/解决本地和链接的访问表之间的这种差异

时间:2010-09-09 22:21:08

标签: ms-access dao ms-access-2003

确定。快速背景: MS Access 2003与2003/2003格式的MDB文件从Access 97升级。

出于本示例的目的,有两个表。

Table 1
Asset
   ID - (text 20)
   ParentID - (text 20)
   Other fields

AssetRels
   ID - (text 20)

将记录添加到资产时,ID将添加到AssetRels。

从Asset.ID到AssetRels.ID,存在一种通过级联更新和级联删除强制执行参照完整性的关系。

从AssetRels.ID到Asset.ParentID,存在一种仅通过级联更新强制引用完整性的关系。

我在资产

中有2条记录
VACU0703200, NULL
VACU0703250, VACU0703200

在数据DB中,我可以进入表格并将VACU0703200更改为VACU0704500,并且更改会按预期传播。

如果我打开链接到数据DB的前端数据库,并尝试相同的更改(在表中直接)我得到“无法更新;当前已锁定”(不,没有关于'另一个会话',这是整个错误信息)

对于“默认记录锁定”

,两个数据库都设置为“无锁定”

显然,行/页/表级别锁存在一些阻止级联更新工作的差异。

是否有人知道我可以在某处停止此错误的某些属性设置? 我不想删除这种关系,但我可能不得不在代码中处理它。

编辑:原因是该表包含备注字段。显然,通过链接表,让Memo字段溢出,4K行大小升级为表锁。这又会引发问题。

解决方案(hackish)是阻止对表单上的ID字段进行编辑,并添加新表单以重命名。在打开新表单之前保存更改,并通过更新查询执行更新。

2 个答案:

答案 0 :(得分:0)

我不明白为什么要移动到前端并从链接表中编辑它应该有所不同。然而,我会删除表链接,然后RE链接。通常有时会设置一些属性并读取链接时间,如果您转到后端数据库并更改某些表属性,通常RE链接表是一个非常好的主意。

作为一般规则,当您向SQL Server添加包含链接表的新列时,通常需要执行上述操作。但是,我建议您删除前端的链接表,并尝试RE链接,这应该可以解决这个问题。

答案 1 :(得分:0)

解决方案(hackish)是阻止对表单上的ID字段进行编辑,并添加新表单以重命名。在打开新表单之前保存更改,并通过更新查询执行更新。

原因是当文本溢出4K表行限制时发生表锁升级。