2

我有这个代码:

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 都定义为 Long Integer。

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

4

1 回答 1

4

检查由该代码构建的字符串。它位于“立即”窗口中:

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

因此,代码要求FindFirst找到EmpNo等于字符串cbEmpNo.Value的第一行。但是由于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
于 2015-07-04T13:50:22.687 回答