如何在 MS Access 的追加查询中将数据类型从文本转换为是/否?
Posted
技术标签:
【中文标题】如何在 MS Access 的追加查询中将数据类型从文本转换为是/否?【英文标题】:How to convert data type from Text to Yes/No inside an append query in MS Access? 【发布时间】:2016-03-18 15:38:05 【问题描述】:在 MS Access 中,我试图将数据从一个表(表 A)附加到另一个表(表 B)中。表 A 有一列类型为“短文本”的列,具有单个值“偶数”或空/空。表 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 条记录添加到表中......
如何在追加数据的同时让 access 改变值?
【问题讨论】:
您的问题很清楚,可以,但请发布错误消息,而不是其图像的链接 【参考方案1】:正如您的错误屏幕所说,问题不在于转换数据类型,错误是由于密钥违规造成的。 尝试在没有此是/否字段的情况下插入,您将确保在此。 您可能在表之间存在关系,因此它不允许插入某些值。
【讨论】:
是的。这是一个愚蠢的数字与。主键的自动编号不匹配。结果证明查询确实与转换部分的 IIF() 一起工作。【参考方案2】:为了以后的任何搜索,这是我的最终查询,它确实有效:
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
,它失败了,因此我收到了错误。
【讨论】:
以上是关于如何在 MS Access 的追加查询中将数据类型从文本转换为是/否?的主要内容,如果未能解决你的问题,请参考以下文章
MS Access:如何在 Access Web App 中添加 15 天至今(数据类型)
在 MS Access 2007 中未正确处理查询部分的日期类型的更新集
从 MS Access 中将交叉表查询结果导出到 Excel