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