我一直在将相同类型的excel文件导入MS Access 2007,直到最近才出现问题。消息说我在覆盖表时发生了密钥违规。我删除了excel文件(主键字段)中的重复项,并仔细检查了excel文件。我重新导入了它仍然显示相同的信息。
我可以采取什么行动来解决?
重复值(密钥违规错误)您要导入的记录可能包含无法存储在目标表的主键字段中的重复值,也不能存储在Indexed属性设置为Yes(No Duplicates)的字段中。消除源文件中的重复值,然后再次尝试导入。
答案 0 :(得分:2)
你所能做的就是解决这个问题。我倾向于怀疑它是一个错误,但即使它是,你仍然必须找到精确的触发器。
在Excel文件中,将键列拉在一起,然后为它/它们对Excel表进行排序。使用整个范围内的公式添加条件格式(如果它在A2中开始,条件格式将读取= A2 = A1,没有美元符号),并带有一些粗体,填充等,以便任何显示清楚。
复制Access表。删除所有密钥,索引,验证规则等,一次删除一次,每次删除后导入到副本,直到导入有效。
小批量复制行(不知道你要说多少行,但一次说50-100个)到一个新工作表,并从新工作表链接并导入(到原始表)直到你可以缩小错误来自哪一行。 (如果一个小批次失败,请继续缩小。)
如果它确实不是违规而是错误,请将错误值和表定义与所有字段大小和键/索引/验证合成一起发布回来。
答案 1 :(得分:1)
转到要在其中添加重复数据的特定表的设计视图,并选择添加为重复的行并将索引更改为YES(DUPLICATE),而不是在此MS-Access数据库表中添加重复数据。 ....................
答案 2 :(得分:0)
仔细检查Access数据库表。 Access经常决定代表您索引字段。这些通常不是UNIQUE索引(在Access中表示为列上的No的“Duplicates OK”属性)但是您可能还有一些您不知道的额外索引。
同时检查表中是否有自动编号字段,并确保自动编号没有搞砸(删除并在空表中重新添加autonum声明)。
答案 3 :(得分:0)
将Excel工作表导入Access时,我遇到了同样的问题。我的错误是由Excel工作表末尾的空行引起的。如果是这种情况,处理它的最简单方法是将Excel工作表中的信息复制到另一张没有空白行的工作表中,由于某种原因,我试图删除空白行的宏没有效果。
此外,空白列也会产生类似的效果,但错误表明行中的某些内容无法找到第11列。