Используя Access VBA, нам нужно сделать оператор IF-Than, но есть 16 значений. Итак, я попытался включить "ИЛИ", но этот код возвращает ошибку «Не могу найти поле" Я ", на которое ссылается выражение. Вот что у нас есть: Примечание: поля находятся в подчиненной форме f_SubReviewer:: If (Me! [F_SubReviewer]! [ReviewerComments] <> "" Или [Adj1] <> "") Чем ...
2 ответа
Это звучит так, как будто if с 16 or s - неправильный путь. С другой стороны, заявление case кажется идеальным для этого.
Быстрый поиск показывает, что MS Access имеет оператор case со следующим синтаксисом:
Select Case test_expression
Case condition_1
result_1
Case condition_2
result_2
...
Case condition_n
result_n
Case Else
result_else
End Select
Это приведет к более читаемому коду, который также может быть быстрее.
Пример использования switch и case против if (с использованием синтаксиса, подобного C, поскольку я знаю тот)
If( (A=1) | (A=2) | (A=3) )
{
Do something
}
Else
{
Do something else
}
switch( A )
{
case 1: {Do something} ; break
case 2:
case 3: {Do something} (A might be 2 or 3 since there was no break behind 2); break.
Default: {Do something else}
}
Похоже, вы пытаетесь проверить несколько полей / переменных, чтобы убедиться, что ни одно из них не является пустым или нулевым. В этом случае вы можете сделать целую кучу вложенных операторов if / elseif , но это может быть ужасно быстро. Я бы предложил создать новую булеву переменную, такую как blnNoBlanks , установить для нее значение true, а затем запустить отдельные операторы if для каждого поля и установить для переменной значение false, если какое-либо из условий не выполняется. Как это:
Dim blnNoBlanks as boolean
blnNoBlanks = True
If (Me![f_SubReviewer]![ReviewerComments] = "" Then
blnNoBlanks = false
End If
If [Adj1] = "" Then
blnNoBlanks = false
End If
'... the rest of the IF statements
If blnNoBlanks Then
'Enter your new code here
End If
Если переменная blnNoBlanks через перчатку IF тогда все в порядке. Если нет, переменная будет ложной, и вы можете действовать соответственно. Даже лучше, чем в приведенном выше коде, было бы поместить все проверки в функцию и просто вызвать ее для присвоения вашей логической переменной. Это облегчит чтение кода и позволит вам снова вызывать эту функцию из других мест вашего кода.
