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
相关产品推荐
相关产品推荐

