Несоответствие происходит потому, что вторым параметром должна быть строка, а не RecordSet.
Если какой-либо из параметров в третьем аргументе является переменной (как в вашем случае), третий аргумент также должен быть объединенной строкой:
temp = DLookup("SKUS_ORDERED", "ORDER_DATA", _
"SKUS_ORDERED = '" & curSKU2 & "' and ORDER = " & curOrder)
РЕДАКТИРОВАТЬ:
Без дополнительного кода трудно увидеть, где вы используете Null.
Правильно ли указаны имя таблицы и столбца?
Какие типы являются вашими переменными? Они действительно имеют значения?
Можете ли вы опубликовать еще код, где мы увидим, как вы объявляете и заполняете переменные?
Символ «_» обозначает разрыв строки. Я мог бы написать целое утверждение в одну строку, но тогда вам нужно было бы прокрутить, чтобы увидеть его полностью:
temp = DLookup("SKUS_ORDERED", "ORDER_DATA", "SKUS_ORDERED = '" & curSKU2 & "' and ORDER = " & curOrder)
РЕДАКТИРОВАТЬ 2:
Не могли бы вы показать части, где объявлены обе переменные и где также инициализируется curSKU2? С тем, что вы опубликовали, по-прежнему не видно, заполнен ли curSKU2 и какие это типы.
Плюс, temp
объявлен как строка, поэтому он никогда не может быть нулевым.
Это имеет два последствия:
If temp <> Null
не имеет смысла.
- DLookup возвращает Null, когда запись не найдена, поэтому несоответствие типов может быть в строке
temp = DLookup(...)
.
Попробуйте temp = Nz(DLookup(...))
вместо.