You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access:多条件筛选子窗体出现类型不匹配错误求助

Access子窗体组合筛选出现“Type Mismatch”错误的原因

我尝试在Access窗体中通过两个条件筛选子窗体,两个筛选条件单独使用时均正常,但组合使用时出现“Type Mismatch”(类型不匹配)错误。

单独筛选条件1(正常运行)

Forms!Frm_Department_Job_List_22.[Qry_Department_Job_List_22 subform].Form.Filter = "[WIP] = True"
Forms!Frm_Department_Job_List_22.[Qry_Department_Job_List_22 subform].Form.FilterOn = True

单独筛选条件2(正常运行)

Forms!Frm_Department_Job_List_22.[Qry_Department_Job_List_22 subform].Form.Filter = "[Customer Due Date] <=Date()"
Forms!Frm_Department_Job_List_22.[Qry_Department_Job_List_22 subform].Form.FilterOn = True

组合筛选代码(报错)

Forms!Frm_Department_Job_List_22.[Qry_Department_Job_List_22 subform].Form.Filter = ("[WIP] = True") And ("[Customer Due Date] <= Date()")
Forms!Frm_Department_Job_List_22.[Qry_Department_Job_List_22 subform].Form.FilterOn = True

错误原因

Filter属性需要的是字符串格式的SQL筛选条件,但组合代码里误用了VBA的And逻辑运算符。VBA的And要求两边是布尔值,你传入的却是两个字符串,VBA尝试把字符串转成布尔值时就会触发“类型不匹配”错误。

正确的组合筛选代码

直接用SQL的AND关键字把两个条件拼成一个完整字符串:

Forms!Frm_Department_Job_List_22.[Qry_Department_Job_List_22 subform].Form.Filter = "[WIP] = True AND [Customer Due Date] <= Date()"
Forms!Frm_Department_Job_List_22.[Qry_Department_Job_List_22 subform].Form.FilterOn = True

如果需要动态拼接条件(比如根据控件值判断是否添加条件),可以先定义字符串变量:

Dim filterStr As String
filterStr = "[WIP] = True" & " AND " & "[Customer Due Date] <= Date()"
Forms!Frm_Department_Job_List_22.[Qry_Department_Job_List_22 subform].Form.Filter = filterStr
Forms!Frm_Department_Job_List_22.[Qry_Department_Job_List_22 subform].Form.FilterOn = True

内容的提问来源于stack exchange,提问作者sambob_628

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 12:55:20