【问题标题】:MS access can't append all the records in the append queryMS 访问无法追加追加查询中的所有记录
【发布时间】:2013-05-25 14:19:18
【问题描述】:

我知道这个问题已经被问过好几次了,但没有一个解决方案能解决我的问题。

我正在尝试在 MS Access 2007 中向名为“Audit Trail”的表中插入一行。

主键是'Activity No'列

以下是我的查询:

INSERT INTO [Audit Trail]
([Activity No], [Project Id], [Activity Date],[Activity Location],[Activity Description],[Data Reference (File No)],[Participant Id],[Person Reporting],[Comments]) 
VALUES
('6','SFT 2013','1/1/2014','AAA','AAA','AAA','AAA','AAA','AAA')

Activity No列的数据类型是Number(最初是autonumber,后来我改了),activity date是datetime,其余都是Text。

它给我一个错误

MS 访问不能追加追加查询中的所有记录

Microsoft Access 无法在追加查询中追加所有记录。 由于类型转换失败,Microsoft Access 将 0 个字段设置为 Null,并且由于键冲突,它没有向表中添加 1 > 记录,由于锁定冲突,没有添加 0 记录,并且由于验证规则违规,它没有添加 0 记录。 仍然要运行查询吗?

这个表也没有任何外键。它之前有一个,但我删除了这个关系。

不过,我可以通过表格的 UI 输入相同的值。

【问题讨论】:

  • 如果这是一个审计表,您在进行更新时归档记录的旧副本,并且您希望为任何给定的 [Activity No] 拥有多个审计记录,那么 [Activity No]不能是主键。 (表的主键不能包含重复项。)
  • 您好,该表目前只包含几条记录,全部通过表 UI 输入。不尝试为主键插入具有重复值的记录。
  • 那么就像@HansUp 说的那样,您应该检查其他可能阻止 INSERT 成功的唯一索引。

标签: ms-access ms-access-2007


【解决方案1】:

你说“活动No列的数据类型是数字......并且活动日期是日期时间”

因此,请丢弃您插入到[Activity No] 中的数字周围的引号,并在您插入到[Activity Date] 中的值周围使用# 日期分隔符。我也更喜欢将 yyyy-mm-dd 格式用于文字日期值。

INSERT INTO [Audit Trail]
    (
        [Activity No],
        [Project Id],
        [Activity Date],
        [Activity Location],
        [Activity >Description],
        [Data Reference (File No)],
        [Participant Id],
        [Person Reporting],
        [Comments]
    )
VALUES
    (
        6,
        'SFT 2013',
        #2014-01-01#,
        'AAA',
        'AAA',
        'AAA',
        'AAA',
        'AAA',
        'AAA'
    )

【讨论】:

  • 您好,我尝试了您的建议,但仍然收到相同的错误消息。
  • 您的插入有多个问题。我确定了2个对我来说很明显的。您必须检查表设计以确定为什么这些值仍然不被接受。例如,密钥违规投诉表明您可能在一个或多个表列上具有唯一索引,并且您的 INSERT 语句尝试添加已存在的值之一的副本。
  • 嗨,我刚刚解决了。你的回答部分帮助了我。实际上,我在数据库中有一个未使用的表,参与者 ID 是该表的外键。仅在我按照您的建议更正查询后,Access 才显示错误消息。非常感谢,很抱歉给您造成的困扰。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
相关资源
最近更新 更多