【问题标题】:VBA: type mismatch in rs.findfirstVBA:rs.findfirst 中的类型不匹配
【发布时间】:2015-07-04 13:35:12
【问题描述】:

我有这个代码:

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 查询。

【问题讨论】:

    标签: ms-access vba type-mismatch findfirst


    【解决方案1】:

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

    ? "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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-06
      • 2015-05-28
      • 2020-03-31
      • 2014-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      相关资源
      最近更新 更多