在MS Access中,我试图将一个表(表A)中的数据附加到另一个表中(表B)。表A有一个类型为' Short Text'单一价值'偶数'或空/ null。表B具有类型为是/否的等效列。我在进行此转换的同时,将表A中的数据插入到表B中 - 如果表A的列具有“偶数”和“#”。将表B的值设置为True,否则将其设置为False。
我尝试了以下查询,但它没有工作:
INSERT INTO TableB( BookName, ChapterName, PageNo, Even)
SELECT name, chapter, page, IIf(UCase([Even or Odd]) = 'EVEN', True,False)
FROM TableA;
以上查询给出了以下错误:
Microsoft Access无法在追加查询中附加所有记录。 由于类型转换失败,Microsoft Access将0字段设置为Null,并且由于密钥违规,它没有向表中添加117条记录....
如何在附加数据的同时更改值?
答案 0 :(得分:2)
正如您的错误屏幕所示,问题不在于转换数据类型,错误是由于密钥违规造成的。 尝试在没有这个是/否字段的情况下插入,并且您将确保这一点。 您可以在表之间建立关系,以便它不允许插入某些值。
答案 1 :(得分:0)
为了以后的搜索,以下是我的最终查询:
INSERT INTO TableB( BookName, ChapterName, PageNo, Even)
SELECT name, chapter, page, IIf(UCase([Even or Odd])="EVEN",-1,0) AS EvenOdd FROM TableA;
要检查的事项,源表和目标表之间是否存在数据类型差异。就我而言,源表中的页面列为number
,目标中的页面为Short Text
。
此外,主要密钥(不是查询的一部分)是Number
而不是AutoNumber
,这是失败的,因此我收到了错误。