Есть у меня на форме ряд полей. Пользователь последовательно переходит с поля на поле. Он может вводить новые записи и править старые. Данные в поле он может править, а может и пропускать. Данные в полях зависят друг от друга. (не все и не от всех). Например, есть поле "Получено отчётов" и есть поле "Обработано отчётов". Значение поля "Обработано отчётов" на может превышать значение поля "Получено отчётов". Поскольку пользователь может ничего в поле не исправлять, то контроль правильности я повесил на событие "Потеря фокуса" (
LostFocus). Вот Код
Private Sub кол_ввод_LostFocus()
if Me.кол_от < Me.Кол_ввод then
Call MsgBox(.......)
Me.кол_от.SetFocus
Me.кол_ввод.SetFocus
Exit Sub
End if
End Sub
Т.е. если есть ошибка, то выдаётся сообщение об ошибке, указатель никуда не переходит, а остаётся в поле "Обработано отчётов".
Но при таком положении событие "Потеря фокуса" (
LostFocus) повторно не срабатывает. Пользователь читает замечание, закрывает сообщение и спокойно идёт дальше по полям. Второй раз контроля не происходит.
Пример. Пользователь корректирует старую запись. Было получено 9 отчётов и обработано 9 отчётов. Пользователь правит в Поле "Получено" 9 на 8, потом переходит на поле "Обработано" и просто хочет уйти с этого поля. Срабатывает проверка на событии "Потеря фокуса" (
LostFocus). Пользователь прочитал сообщение, закрыл окошко с ним. и пошел дальше по полям. Второй раз контроль не выполняется.
Как тут быть? Как заставить программу повторно выполнять контроль?
У меня А2003, но в других версиях скорее всего то же самое.
------------------------------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?
http://www.sql.ru/forum/1121565/povtornyy-lostfocus-ne-srabatyvaet