Лучший ответ зависит от нескольких предположений:
A) ваш запрос не возвращает значений NULL, а
B) что вы ранее сохранили название продукта в существующей переменной.
У вашего кода есть некоторые проблемы.
1) if (objRS("ProductName")
в основном спрашивает, является ли значение набора полей логическим значением True
. Мое первое предположение состоит в том, что вы уже знаете название продукта, который тестируете. Таким образом, приведенный выше фрагмент кода следует заменить следующим: if (objRS("ProductName").value = strMyProductName
, где strMyProductName
- это переменная, в которой хранится название продукта (в виде строки).
2) Вы должны рассмотреть вопрос о сохранении вычисленной даты в переменной вне цикла. Нет необходимости повторно вычислять дату, если вы можете вычислить ее один раз, сохранить в переменной и использовать переменную в своем сравнении.
3) Удалите последний компонент вашего условного and objRS("ProductName")
, потому что он избыточен и имеет ту же неисправную логику, что я объяснил в (1) выше.
4) Ваш DateAdd()
может быть написан лучше.
TL; DR
dim strMyProductName, dat90, AlreadyPurchased
AlreadyPurchased = false
strMyProductName = "Shoes"
dat90 = dateadd("d", -90, now) '90 days ago
Do Until objRS.EOF
if cstr(objRS("ProductName").value)=strMyProductName and cdate(objRS("PurchaseDate")) <= dat90 then
AlreadyPurchased = true
exit do
end if
objRS.movenext()
Loop