MS-Access 2007 查询 运行-时间错误

MS-Access 2007 query run-time error

我有一个 MS-Query 在 运行 时导致问题错误 # 3071 留言很长,这里开始:

The expression is typed incorrectly, or is too complex to be evaluated.

该查询有很多列和函数,经过反复试验,我将查询中有问题的部分隔离为:

...
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 应该不会起作用。但是,当删除该部分时,原始大查询会出错。

我的猜测是,当查询是来自子表单的 运行 时,字段没有正确传递给查询并且是数字字段,这导致了问题。

你明白我收到这条消息的原因了吗?

试试这个:

And
[Component.Serial]>=[Forms]![frm_RptFilter_Components].[fldAutoSeq]
And 
[Component.Serial]<=[Forms]![frm_RptFilter_Components].[fldAutoSeq2]

指定这两个参数为Long:

[Forms]![frm_RptFilter_Components].[fldAutoSeq] 
[Forms]![frm_RptFilter_Components].[fldAutoSeq2]