【问题标题】:Access Validation Rule Violations on Append Query附加查询的访问验证规则违规
【发布时间】:2011-01-30 11:04:25
【问题描述】:

我在尝试在 access 中运行附加查询时收到以下错误。

Microsoft Office Access 设置 .... 由于违反验证规则,它没有添加... 779280 条记录。

如果我仍然选择运行查询,实际上什么都不会发生。

为了提供一些上下文,我只是试图将一个填充的字段复制到另一个当前未填充的字段,其中包含类似于“16-2009-02、34-2010-02 等”的值。

字段本身没有设置验证规则,并且都有标准的文本字段选项。

我希望能够简单地删除这些连字符并解决问题。但我想这就是我不确定的地方,那些连字符真的有问题吗?

使用 Access 2003 运行 SP3。

提前致谢!

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    目标字段是否将允许零长度设置为 false 或将必需设置为 true?如果是这样,则源列中的某些数据可能为空或设置为空字符串。此外,您应该验证新列上的字段大小是否大于源列。

    编辑 在从一个表追加到另一个表时,您必须确保填充构成目标表主键的列。因此,从您的屏幕截图中,您需要包含“日志 ID”表中的 loggeriddatetime 列。现在,如果有冲突,Access 应该告诉你有多少行产生了冲突,并让你追加那些没有与 loggeriddatetime 的唯一性限制冲突的行

    【讨论】:

    • 允许零长度 = 是 必需 = 否 我确实有一些 Null 字段,但我认为宁可应用于整个查询,它只会对那些这样做的人失败。目前,整个查询都失败了。
    • 并且目标查询上的字段大小大于或等于源的字段大小?
    • 顺便说一句,目标表是否有自动编号列?我认为您从追加查询中排除了此列。
    • 不,目标字段没有自动编号列。就一般属性而言,它们是:字段大小 = 50 格式 = 空输入掩码 = 空标题 = 空 ... = 空验证文本 = 空要求 = 不允许零长度 = 是索引 = 不压缩 = 是 IME Mode = No Control IME Sentence Mode = No Smart Tags = No 此外,我删除了所有尝试复制的具有 Null 值的字段,但仍然出现相同的错误。这很奇怪。
    • 好的。感谢您的屏幕截图。在追加时,您需要将记录追加到目标表(以及任何其他必填字段)的 PK 中,并且这些新值在整个表中必须是唯一的。因此,您需要包含 loggerid 和 datetime 列,假设您附加的源值不会产生冲突。
    【解决方案2】:

    确保目标列未编入索引,如果已编入索引,则允许重复。 Access 经常代表您做出索引决策,有时它们是不正确的。

    【讨论】:

      猜你喜欢
      • 2023-01-22
      • 2013-12-22
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多