-1

Используя Access VBA, нам нужно сделать оператор IF-Than, но есть 16 значений. Итак, я попытался включить "ИЛИ", но этот код возвращает ошибку «Не могу найти поле" Я ", на которое ссылается выражение. Вот что у нас есть: Примечание: поля находятся в подчиненной форме f_SubReviewer:: If (Me! [F_SubReviewer]! [ReviewerComments] <> "" Или [Adj1] <> "") Чем ...

2 ответа2

1

Это звучит так, как будто 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}
}
0

Похоже, вы пытаетесь проверить несколько полей / переменных, чтобы убедиться, что ни одно из них не является пустым или нулевым. В этом случае вы можете сделать целую кучу вложенных операторов 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 тогда все в порядке. Если нет, переменная будет ложной, и вы можете действовать соответственно. Даже лучше, чем в приведенном выше коде, было бы поместить все проверки в функцию и просто вызвать ее для присвоения вашей логической переменной. Это облегчит чтение кода и позволит вам снова вызывать эту функцию из других мест вашего кода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .