【问题标题】:How do I overcome / work around this difference between local and linked Access Tables如何克服/解决本地访问表和链接访问表之间的这种差异
【发布时间】:2010-09-09 22:21:08
【问题描述】:

好的。快速背景: 带有从 Access 97 升级的 2003/2003 格式 MDB 文件的 MS Access 2003。

就本示例而言,有两个表。

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

AssetRels
   ID - (text 20)

将记录添加到 Asset 时,ID 将添加到 AssetRels。

从 Asset.ID 到 AssetRels.ID 存在一种关系,它通过级联更新和级联删除来强制引用完整性。

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

我在资产中有 2 条记录

VACU0703200, NULL
VACU0703250, VACU0703200

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

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

对于“默认记录锁定”,两个数据库都设置为“无锁定”

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

有谁知道我可以在某处使用某些属性设置来阻止此错误? 我宁愿不必删除关系,但否则我可能不得不,并在代码中处理它。

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

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

【问题讨论】:

  • 修改后的记录保存了吗?
  • 这是触发错误的保存。
  • 你描述了两个编辑,编辑1和编辑2。我问你是否在编辑1之后和编辑2之前保存记录。如果不保存,是的,你会遇到问题你在描述。
  • 不,在我描述的两种情况下,每一种都只有 1 次编辑,第二次“编辑”实际上是从表 1 到表 2 到表 1 的两步级联更新

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


【解决方案1】:

我不明白为什么移动到前端并从链接表中编辑它会有什么不同。但是,我会删除表链接,然后删除 RE 链接。很多时候有时候会设置一些属性,读取一个链接的时间,如果你去后端数据库修改一些表的属性,通常RE链接表是一个很好的主意。

作为一般规则,当您将带有链接表的新列添加到 SQL Server 时,您通常需要执行上述操作。但是,我建议您在前端删除链接表,然后尝试重新链接,这应该可以解决此问题。

【讨论】:

  • 我已经找到原因,但没有治愈方法。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2015-10-25
    相关资源
    最近更新 更多