MS Access查询报错:表达式类型错误或过于复杂的求助
问题描述
在MS Access中运行查询填充报表时,系统返回“表达式类型错误或表达式过于复杂”报错。该查询需要筛选指定日期范围内MRC为TRUE的所有记录:
- 使用条件
dbo_Project_Master.MRC IS NOT NULL时查询可正常运行 - 为MRC赋值筛选时触发报错,MRC为bit类型,尝试用
='1'的写法仍报错
原SQL代码如下:
SELECT dbo_Project_Master.ProjectID, dbo_Project_Master.Project_Name, dbo_Project_Master.Permit_Num, dbo_Municipality.Municipality, dbo_Project_Master.MRC, dbo_Project_Master.Date_Received FROM (dbo_Project_Master INNER JOIN dbo_Project_Municipality ON dbo_Project_Master.ProjectID = dbo_Project_Municipality.ProjectID) INNER JOIN dbo_Municipality ON dbo_Project_Municipality.MunicipalityID = dbo_Municipality.MunicipalityID WHERE (dbo_Project_Master.Date_Received >= Forms!frmCriteriaAnnualRpt!txtStartDate) AND (dbo_Project_Master.Date_Received <= Forms!frmCriteriaAnnualRpt!txtEndDate) AND (dbo_Project_Master.MRC = '1');
解决方法
- 修正bit类型判断写法:Access中bit类型的布尔值存储为
-1(True)和0(False),不要用带引号的字符串判断,可改为以下任意一种:dbo_Project_Master.MRC = Truedbo_Project_Master.MRC = -1dbo_Project_Master.MRC = 1(部分场景下Access可识别数值1为True)
- 检查表单控件值:确保
Forms!frmCriteriaAnnualRpt!txtStartDate和Forms!frmCriteriaAnnualRpt!txtEndDate控件有有效日期值,空值可能导致表达式复杂报错,可添加非空判断:AND (Forms!frmCriteriaAnnualRpt!txtStartDate IS NOT NULL) AND (Forms!frmCriteriaAnnualRpt!txtEndDate IS NOT NULL)
内容的提问来源于stack exchange,提问作者Luna8426
相关产品推荐
相关产品推荐

