Первые несколько замечаний:
- Я полагаю, ваш DLookup никогда не работал хорошо:
[price]
должен быть представлен в виде строки: "[price]"
- Ваш параметры для условия должны быть объединены в строку. Они были частью строки.
- Поскольку product - это строка, значение условия должно быть заключено в
'
s. - Синтаксис условий был немного испорчен .. .
- Также не рекомендуется называть поля / объекты как зарезервированные имена:
size
такое слово. - Всегда старайтесь указывать собственность, которую вы хотите использовать явным образом. В этом случае это
.Value
. Он работает без, но может вызвать проблемы в зависимости от того, какой тип переменной он назначен. Тогда он может быть назначен как объект, на который вы ссылаетесь. - Добавьте
Option Explicit
в верхней части каждого модуля. Это предотвращает использование необъявленных переменных и, следовательно, облегчает отладку.
Я бы инкапсулировал функциональность в подпроцедуре и вызывал ее там, где и когда это необходимо.
Это должно быть тем, что вы хотите :
Option Compare Database
Option Explicit
Private Sub form_load()
RefreshPrice
End Sub
Private Sub cboprod_AfterUpdate()
RefreshPrice
End Sub
Private Sub cboprod_AfterUpdate()
RefreshPrice
End Sub
Private Sub RefreshPrice()
txtprice.Value = DLookup("[price]", "invent", "[product] = '" & cboprod.Value & "' And [size] = " & txtweight.Value)
End Sub