2015-07-04 4 views
2

У меня есть этот код: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).

in tblJobs и EmpNo & JobNo определяются как длинное целое число.

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

ответ

4

Осмотрите строку, построенную этим кодом. Здесь в открывшемся окне:

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

Поэтому код просит FindFirst найти первую строку, в которой Empno равен строке cbEmpNo.Value. Но так как EmpNo - это длинное целое число, это сравнение вызывает ошибку несоответствия типа. Эта же проблема относится к 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 
+0

спасибо вам большое, это похоже, сработало. – ckid

Смежные вопросы