我经常在 Access 上使用的联合查询中突然出现“表达式输入错误或太复杂”错误

Posted

技术标签:

【中文标题】我经常在 Access 上使用的联合查询中突然出现“表达式输入错误或太复杂”错误【英文标题】:Out of nowhere getting the "The expression is typed incorrectly or too complex" error on a union query that I frequently use on Access 【发布时间】:2018-11-12 14:57:51 【问题描述】:

我有一个联合查询,它将来自其他几个查询的数据汇总在一起。这些查询根据在表单上输入的日期搜索数据。

我使用这个查询的时间最长,甚至有几个月前的备份,当我知道它有效时,但突然,这个错误反而弹出了。

联合查询

SELECT MnthlyFireExCnt.ProjectCriteria AS Project, MnthlyFireExCnt.CountOfFire_Extinguisher_Location_ID_ AS NumberOf, MnthlyFireExCnt.Type
FROM MnthlyFireExCnt

UNION ALL 

SELECT MnthlyFrstAdCnt.ProjectCriteria, MnthlyFrstAdCnt.CountOfForm_Record_Number, MnthlyFrstAdCnt.Type
FROM MnthlyFrstAdCnt

UNION ALL 

SELECT MnthlyIncCnt.ProjectCriteria, MnthlyIncCnt.CountOfDate_Time_Reported, MnthlyIncCnt.Occurrence
FROM MnthlyIncCnt

UNION ALL 

SELECT MnthlyJHACnt.ProjectCriteria, MnthlyJHACnt.CountOfDate, MnthlyJHACnt.Type
FROM MnthlyJHACnt

UNION ALL 

SELECT MnthlySiteObsvCnt.ProjectCriteria, MnthlySiteObsvCnt.CountOfTime, MnthlySiteObsvCnt.Type
FROM MnthlySiteObsvCnt

UNION ALL 

SELECT MnthlySSICnt.ProjectCriteria, MnthlySSICnt.CountOfDate, MnthlySSICnt.InspCriteria
FROM MnthlySSICnt

UNION ALL 

SELECT MnthlyToolTCnt.ProjectCriteria, MnthlyToolTCnt.CountOfDate_Time, MnthlyToolTCnt.Type
FROM MnthlyToolTCnt


UNION ALL SELECT MnthlyWSSCnt.ProjectCriteria, MnthlyWSSCnt.CountOfForm_Record_Number, MnthlyWSSCnt.Type
FROM MnthlyWSSCnt;

这是为 Union Quer 将数据拉到一起的查询之一。

SELECT SSIReportsProjectCrit.ProjectCriteria, Count(MnthlyFireExData.Fire_Extinguisher_Location_ID_) AS CountOfFire_Extinguisher_Location_ID_, "Fire Extinguisher(s) Inspected" AS Type
FROM SSIReportsProjectCrit LEFT JOIN MnthlyFireExData ON SSIReportsProjectCrit.ProjectCriteria = MnthlyFireExData.Site_Location
GROUP BY SSIReportsProjectCrit.ProjectCriteria, "Fire Extinguisher(s) Inspected";

这个查询没有问题。它正在拉起数据。

任何帮助将不胜感激!

【问题讨论】:

可能是其中一个基础表发生了变化。 错误表明类型错误...您没有向我们展示您正在使用的表的类型——您正在使用的表的类型是什么? 首先从 Group By 中删除“Fire Extinguisher(s) Inspected” .. @Gustav 虽然 Group By 中的字符串文字可能看起来没有必要,但它是完全有效的 Access SQL,应该不会导致错误。查询设计器会为聚合查询的文字值自动生成这样的表达式。 OP 已经表示个人查询和联合过去一直有效,那么这些建议是否有特殊原因? 【参考方案1】:

测试联合查询是否单独工作。

如果他们不这样做,则表格设计中的某些内容可能已更改。在任何情况下,请检查查询是否返回相同类型的数据。 如果他们这样做了,并且您知道 a) 整个联合查询根本没有改变,并且 b) 它在过去一直有效,那么您认为查询很好并且一直很好的直觉可能是正确的。李>

根据我的经验,我发现这也可能是由于 Access 文件损坏造成的。有时,如果我找不到任何其他合乎逻辑的解释,我会先检查一下。在这种情况下,对我有用的是:

    尝试压缩并修复相关文件 如果问题仍然存在,则创建一个新的 Access 文件并将旧文件中的所有对象导入新文件,添加任何 VBA 引用/库,对其进行编译、压缩和修复,然后查看是否可以解决问题。李>

【讨论】:

以上是关于我经常在 Access 上使用的联合查询中突然出现“表达式输入错误或太复杂”错误的主要内容,如果未能解决你的问题,请参考以下文章

如何对access中两个数据库中表进行联合查询

为啥我的网站上突然出现“不存在 'Access-Control-Allow-Origin' 标头”错误?

MS Access SQL 查询 - 将所有表与多个表联合 - 重复字段

Access的Left join多表联合查询

MS Access 2010中日期字段的联合查询

MS Access导出联合查询到Excel,VBA问题