【发布时间】:2017-08-14 04:16:39
【问题描述】:
搜索这个问题会返回相当多的搜索结果,但有很多偏离轨道的答案,所以我在这里发布一个简明的描述,并在下面回答。
此问题困扰 Microsoft Access 2010 和之前的某些版本。 Access 2013 将备注类型重命名为长文本。不知道有没有同样的问题。
在某些特定情况下,根本问题与在具有备注字段的表上运行 UPDATE 查询有关。这可能是在可视化查询窗口中组成的 UPDATE 查询,或者是一些通过 DAO 或 ADO 或类似方式运行 SQL 的 VBA。或者它可能在通过表单更新时出现。
(当前的帖子只关注在 Access 数据库中发生的这种情况,尽管在其他地方您会发现当 Access 连接到外部数据库服务器时类似的问题的讨论。)
Access(或者可能是 Jet)不会立即生成明显的错误警报,而是将值 #Error(不仅仅是字符串“#Error”!)放入备注字段。这可能很容易直到稍后才被注意到,从而导致可见的错误,例如:
-- 你使用压缩和修复。这似乎完成了,但 Access 悄悄地添加了一个包含几行的 MSysCompactError 表。一个错误 -1611 抱怨 Access 已停止并且无法完成操作。第二个看起来更具体的错误抱怨它找不到“描述”字段。这似乎是一个无关紧要的内部错误。
-- 您尝试将表复制到另一个数据库。 Access 给出一个错误,抱怨另一个用户正在使用该表或已更新该表,并且不会完成该操作。
-- 对您未注意到的、碰巧包含 #Error 值的行的其他操作失败。
无论如何,根本问题是导致#Error 值首先放入备注字段的原因。
许多张贴者指出,如果 UPDATE 尝试将长度超过大约 2000 个字符的字符串放入备注字段,则会发生这种情况。这是一个惊喜,因为备忘录字段应该能够容纳 1 gig 字符或更多,具体取决于版本,即使它只允许通过 UI 显示 65k。
那么为什么在使用 >2000 个字符进行更新时会出现错误?
【问题讨论】: