Errati c Сравнение списков в Access VBA - PullRequest
1 голос
/ 19 апреля 2020

Я установил источник строки в одну и ту же таблицу для двух разных несвязанных списков, cbo_MaxCost и cbo_MinCost, в форме. Эти комбинированные списки предназначены для указания минимума и максимума диапазона значений для каждой записи в другой таблице. Чтобы убедиться, что это так, я установил код в каждом событии AfterUpdate комбобокса, чтобы проверить,

cbo_MaxCost >= cbo_MinCost

или предупредить пользователя с ошибкой.

Проблема в том, что эта проверка выполняется беспорядочно. Например, иногда Access VBA оценивает

21> 11

как Ложь, а в других случаях как Истина. Использование обозначений точек и восклицательных знаков не имеет значения, равно как и использование «Я». или нет, или ".Value" или нет. Пройдя по нему, вы увидите, что Access во время сравнения регистрирует правильные значения в выпадающих списках. Такое поведение, кажется, происходит чаще, когда я выбираю намного более высокое или более низкое значение, чем было ранее в одном из блоков. Я не могу понять, чем это вызвано.

Это код:

Private Sub cbo_MaxCost_AfterUpdate()
   If cbo_MaxCost >= cbo_MinCost Then
      MsgBox ("Access is calculating correctly.")
   Else
      MsgBox ("The maximum cost should be higher than the minimum.")
   End If
End Sub

Private Sub cbo_MinCost_AfterUpdate()
   If cbo_MaxCost >= cbo_MinCost Then
      MsgBox ("Access is calculating correctly.")
   Else
      MsgBox ("The maximum cost should be higher than the minimum.")
   End If
End Sub

1 Ответ

1 голос
/ 19 апреля 2020

Имейте в виду, что поле со списком / списком всегда возвращает текст , поэтому перед сравнением необходимо преобразовать в число c:

CCur(Me!cbo_MaxCost.Value) >= CCur(Me!cbo_MinCost.Value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...