【发布时间】:2016-07-12 22:56:17
【问题描述】:
我有一个 MS-Query 导致运行时出现问题错误 #3071 消息很长,这里是开头:
表达式输入错误,或者太复杂而无法计算。
查询有许多列和函数,经过反复试验,我将查询的违规部分隔离为:
...
And
[Component.Serial])>=Val(([Forms]![frm_RptFilter_Components].[fldAutoSeq]))
And
([Component.Serial])<=Val(([Forms]![frm_RptFilter_Components].[fldAutoSeq2])))
名称:frm_RptFilter_Components 是输入来自的表单的正确名称,名称:fldAutoSeq、fldAutoSeq2 是该表单上字段的名称。
表达式 Forms... 是正确的,并用于查询的其他部分。所以拼写不是问题。
数据库中的列是“Serial”,它是一个整数。它被比作表单域(文本域)。
我可以自己执行有问题的部分,如下所示:
SELECT * FROM Component
WHERE ((
[Component.Serial])>=Val(([Forms]![frm_RptFilter_Components].[fldAutoSeq]))
And
([Component.Serial])<=Val(([Forms]![frm_RptFilter_Components].[fldAutoSeq2])))
所以,我很困惑。如果违规部分包含语法错误,那么上面的 SELECT 应该不起作用。但是,当删除该部分时,原始大查询会出错。
我的猜测是,当从子表单运行查询时,字段没有正确传递给查询并且是数字字段,这会导致问题。
你明白我收到消息的原因吗?
【问题讨论】:
标签: ms-access-2007