VBA: несоответствие типов в 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 определяются как Long Integer.

cbEmpNo и cbJobNo - это комбинированные списки без источника управления. Их источником строки является SQL-запрос, извлекающий EmpNo / JobNo из tblJobs.

1 ответ

Решение

Изучите строку, созданную этим кодом. Вот это в Немедленном окне:

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

Так что код спрашивает FindFirst найти первую строку, где EmpNo равен строке cbEmpNo.Value. Но поскольку EmpNo имеет тип Long Integer, это сравнение вызывает ошибку несоответствия типов. Та же проблема относится и к JobNo.

Создайте строку, включающую значения этих элементов управления (cbEmpNo и cbJobNo) вместо их имен, и не включайте кавычки вокруг этих значений:

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
Другие вопросы по тегам