Microsoft Office Access 不能在追加查询中追加所有记录

时间:2023-12-26 11:28:01

有客户反映,我们的软件ACCESS数据库版本在使用时会出现"Microsoft Office Access 不能在追加查询中追加所有记录"的错误。使用客户的数据库调试软件发现错误出现在执行下图这条SQL语句的时候,把SQL语句拿出来直接在Access里面执行同样报错,看来不是我们软件的问题。。。

Microsoft Office Access 不能在追加查询中追加所有记录

"一定是Access出问题了",这是我的第一反应。连错误提示都是这样没有参考价值,什么叫"Microsoft Access设置0字段为Null是因为类型转换失败,它未将1记录添加到表是因为键值冲突,没有添加0记录是因为锁定冲突,没有添加0记录是因为验证规则冲突。"??? That's why I hate Access!!

既然提示了类型转换失败和键值冲突,就看看表结构吧,如下图:

Microsoft Office Access 不能在追加查询中追加所有记录

0字段应该是自动编号字段TRADEID了,1字段就是ACCOUNTNO。

先看看ACCOUNTNO有没有键值冲突。错误语句插入的是691,换个别的试试,还是不行。再说这个字段也没有要求数据唯一性,应该不是这里的问题了。

只可能是TRADEID字段的问题了。自动编号字段能保证唯一性,不知道"类型转换失败"和"锁定冲突"指的是什么。只能修改一下这个字段试试,把长整型改为整型,也不行。TRADEID是主键,把主键去掉试试,居然就行了!!!成功插入数据,没有提示那个错误,见下图。

Microsoft Office Access 不能在追加查询中追加所有记录

由此看来,这应该是锁定冲突造成的。至于"锁定冲突"是如何造成的,我在网上Google了一下,主要是因为多人同时操作数据库。

至此,问题原因和解决方法都已经明确。我的软件设计是在单机环境下使用,大部分客户使用方法正确,通过软件进行操作,数据库读写正常。该客户手工打开数据库操作,造成数据库锁定冲突。

知道原因就知道其实有更简单的解决方法,熟悉Access的都知道J.