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


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

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

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

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

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

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

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

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

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

  • 相关阅读:
    使网页变灰的代码(包括FLASH等所有网页元素).
    技术面试问题回答
    Spring总结
    IE9插件差不多完成了
    通过dymamic简化Pinvoke调用
    shuffle算法的一种简易实现
    用Reactive Extensions快速实现鼠标手势功能
    编写递归调用的Lambda表达式
    Visual Studio 11 开发者预览版可以下载了
    关于获取所有排列方式的算法
  • 原文地址:https://www.cnblogs.com/cartler/p/3484751.html
Copyright © 2020-2023  润新知