VBA: rs.findfirst 中的类型不匹配

VBA: type mismatch in rs.findfirst

我有这个代码:

Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("tblJobs", dbOpenDynaset)
rs.FindFirst "EmpNo=" & "'cbEmpNo.Value'" & " And " & "JobNo=" & "'cbJobNo.Value'"

而且我的类型一直不匹配(删除 ' 似乎没有帮助,在 EmpNo 和 JobNo 周围添加 [] 也没有帮助)。

在 tblJobs 中,EmpNo 和 JobNo 都被定义为长整数。

cbEmpNo & cbJobNo 是没有控制源的组合框。他们的行源是 SQL 从 tblJobs 中提取 EmpNo / JobNo 的查询。

检查由该代码构建的字符串。这是在即时 window:

? "EmpNo=" & "'cbEmpNo.Value'" & " And " & "JobNo=" & "'cbJobNo.Value'"
EmpNo='cbEmpNo.Value' And JobNo='cbJobNo.Value'

因此代码要求 FindFirst 找到 EmpNo 等于字符串 cbEmpNo.Value[=25= 的第一行].但是由于 EmpNo 是 Long Integer,该比较会触发类型不匹配错误。同样的问题适用于 JobNo.

构建字符串以包含这些控件的值(cbEmpNocbJobNo)而不是它们的名称,并且不包含这些值的引号:

Dim strFind As String
strFind = "EmpNo=" & Me.cbEmpNo.Value & " And JobNo=" & Me.cbJobNo.Value
Debug.Print strFind ' <- view this in Immediate window; Ctrl+g will take you there
rs.FindFirst strFind