Правило проверки формы Access 2016 не срабатывает

У меня есть простая несвязанная форма доступа 2016. В форме у меня есть несколько элементов управления, включая текстовые поля и поля со списком. В первом элементе управления текстовым полем я хотел бы потребовать значение данных (основной тип данных поля таблицы - короткий текст).

Я установил свойство «Правило проверки» для элемента управления на странице свойств «Не является нулевым» и добавил соответствующее текстовое сообщение проверки.

По неизвестной причине мне не удалось заставить это правило проверки когда-либо срабатывать. Я очистил правило проверки на столе, чтобы убедиться, что оно не мешает, однако не повезло.

Это похоже на то, что проверка проверки не происходит, когда фокус покидает элемент управления. Не существует и другой написанной процедуры обработки событий, которая могла бы вмешиваться.

Спасибо за помощь.


person Richard    schedule 04.08.2016    source источник
comment
Пока вы не измените элемент управления, проверка не будет запущена. Я бы предложил использовать событие before_update на уровне формы, чтобы проверить, является ли ваш элемент управления нулевым или нет.   -  person Rene    schedule 04.08.2016
comment
Спасибо Рене, я на самом деле не понимал, что проверка не будет запущена, если не будет изменений. Глядя на события до обновления, у них одна и та же проблема, она не сработает, если не произошло изменение. Мое желание состоит в том, чтобы активировать правило проверки, когда пользователь выходит из элемента управления. Похоже, у Джона Фаулера может быть решение, или я всегда могу перейти к элементу управления при выходе из процедуры события.   -  person Richard    schedule 04.08.2016


Ответы (2)


Вы можете дать элементу управления значение по умолчанию, затем

Form_load()
Yourcontrol.setfocus
Sendkeys "{DEL}"
person John W Fowler    schedule 04.08.2016
comment
Я думаю, что просто решу этот вопрос в процедуре управления OnExit. Sendkeys del запускает включение/выключение numlock, так что это не сработает. - person Richard; 04.08.2016

Требование состояло в том, чтобы проверить элемент управления на отсутствующее значение, используя правило проверки, когда элемент управления потерял фокус (т. е. пользователь вышел из текстового поля, даже не введя значение). Я хотел, чтобы пользователь немедленно получил обратную связь о том, что ему нужно предоставить значение для данного элемента управления.

Как отметил Рене в комментариях, правило проверки не срабатывает, если не было изменено значение.

У решения Sendkeys есть проблемы, я использую Sendkeys только в крайнем случае.

Решением в этом случае было поместить проверочный тест в обработчик событий Control_OnExit. Пользователь получает немедленную обратную связь по своему желанию и не ждет, пока запись будет отправлена.

Еще одно замечание, которое легко можно было пропустить; в несвязанной форме событие before_update никогда не сработает.

person Richard    schedule 04.08.2016