当没有验证规则时,由于验证错误而追加查询失败(访问)

时间:2016-02-16 22:30:44

标签: validation ms-access append ms-access-2013

我正在尝试在Access 2013中将数据从一个表附加到另一个表。目标表[ActionItems]尚无记录。

源表格[Students]包含必要的列:[AutoID](自动编号),[Action Status](短文本),[Action Status Last Updated](日期/时间),{{ 1}}(短文)。

我已将目标表设置为与数据类型和字段匹配(尽管字段名称略有不同,我已在追加查询中正确加入它们)。目标表中的[Action Status Description]字段设置为Number,Long Integer,正如我在其他地方所建议的那样。

如果我在数据表视图中查看追加查询,我会看到731条记录,就像我应该的那样。但是当我尝试运行查询时,我收到以下错误:

  

“Microsoft Access无法附加所有记录...将0字段设置为   由于类型转换失败而为空... 0 ...密钥违规... 0 ...   锁定违规,以及由验证规则引起的 731条记录   违反“。

目标表中有 NO 验证规则!两个文本字段都允许零长度,[AutoID]字段没有默认值。我不明白我错过了什么。

这是我的SQL(我意识到我的列名相当冗长):

[AutoID]

如果有帮助,这里有一个指向数据库精简版的链接:https://drive.google.com/file/d/0BysgnYaEVPnJemNnOUc3ZmFsWXM/view?usp=sharing

我删除了所有其他表格和任何可识别的信息。唯一的另一个主要区别是INSERT INTO [ActionItems] ( AutoID, [Action Status], [Action Status Last Updated], [Action Status Description] ) SELECT [Students].[AutoID (Do not use)], [Students].Status, [Students].[Status Last Updated], [Students].[Status Description] FROM [Students]; 表中的主键已从复合键([Students][First Name][Last Name])更改为单个主键( [Email])。我对[AutoID (Do not use)]表没有任何改动。即使进行了这些更改,错误仍然与先前描述的完全相同。

1 个答案:

答案 0 :(得分:0)

目标表ActionItems包含名为Action Status Last Updated By的字段。该字段的必需属性设置为,其默认值属性为空。这意味着每当您向该表添加新行时,必须Action Status Last Updated By提供值。

请注意,INSERT声明不会为Action Status Last Updated By提供任何内容。因此INSERT不会添加任何行。

在我的数据库副本中,我将字段的必需属性更改为。完成更改后,执行INSERT查询会向ActionItems添加731行... Students中的每一行都有一行。

如果您更喜欢其他解决方案,可以将必需设置为 True ,然后将某些内容放入字段的默认值属性中或更改INSERT为该字段提供值。