连接具有不同数据类型的两个表MS ACCESS-“表达式中的类型不匹配”错误

时间:2018-10-03 12:09:50

标签: sql ms-access

我正在尝试使用两个实时CSV对访问进行查询,这些CSV具有一个具有不同数据类型(数字和短文本)的公共字段。我发现您可以使用'CStr'连接不同的数据类型。我在SQL视图的代码中添加了“ CStr”。请找到下面的代码。

这给了我想要访问的输出,当我单击“数据表视图”时,现在可以看到输出。但是,当我尝试将数据导出(实际上是在尝试创建导出规范,以便可以使用宏导出csv)作为csv时,会收到“表达式中类型不匹配”的错误消息。

这是我的代码:

SELECT Sixthform_Reg_Year_Groups.Forename, 
       Sixthform_Reg_Year_Groups.Surname, 
       Sixthform_Reg_Year_Groups.Reg, Students.objectGUID
FROM Sixthform_Reg_Year_Groups INNER JOIN
     Students
     ON CStr(Sixthform_Reg_Year_Groups.Person_id) = Students.employeeID
WHERE (((Sixthform_Reg_Year_Groups.Reg)="12E"));`

我也尝试过在两边都添加“ CStr”。如下所示,但遇到相同的问题。

FROM Sixthform_Reg_Year_Groups INNER JOIN
     Students
     ON CStr(Sixthform_Reg_Year_Groups.Person_id) = CStr (Students.employeeID)
WHERE (((Sixthform_Reg_Year_Groups.Reg) = "12E"));`

当然,如果没有“ CStr”,我什至无法在“数据表视图”上查看输出。每当我单击数据表视图时,它就会显示“表达式中的类型不匹配”错误消息。

任何解决此问题的帮助将不胜感激。

先谢谢了。

其他信息:数据类型为EmpoyeeID为“短文本”,人员ID为“数字”

2 个答案:

答案 0 :(得分:1)

好的,我设法解决了这个问题,最后证明很简单。这就是我所做的。

基本上,我重新导入了链接表。这次,在导入窗口中,我单击了“高级”,并在“人员ID”列上将数据类型更改为“短文本”,以与“ employeeID”数据类型匹配。然后所有问题都解决了。 (我不知道你能做到)

谢谢大家的答复。通过您的评论引导我走了正确的道路。

非常感谢。

答案 1 :(得分:0)

反过来尝试:

ON Sixthform_Reg_Year_Groups.Person_id = Val(Students.employeeID)

和/或防止 Null 错误:

ON CStr(Nz(Sixthform_Reg_Year_Groups.Person_id, 0)) = Nz(Students.employeeID)