如何在MS Access中的追加查询中将数据类型从文本转换为是/否?

时间:2016-03-18 15:38:05

标签: ms-access ms-access-2010 ms-access-2007 ms-access-2013

在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;

以上查询给出了以下错误:

Access Error

  

Microsoft Access无法在追加查询中附加所有记录。   由于类型转换失败,Microsoft Access将0字段设置为Null,并且由于密钥违规,它没有向表中添加117条记录....

如何在附加数据的同时更改值?

2 个答案:

答案 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,这是失败的,因此我收到了错误。