Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обработка ошибки для маски ввода (+)
 
 автор: Евген   (16.03.2010 в 14:58)   личное сообщение
 
 

Здравствуйте!

Есть форма, в ней поле, в которое пользователь вводит данные по маске (допускается ввод 6 цифр), затем пользователь должен нажать одну из кнопок "ОК" и "Отмена" (соответственно дальше выполняется определенный код или форма закрывается).

Обнаружилась такая неприятная особенность Акса - если введено меньше 6 цифр, то выскакивает стандартное аксовое сообщение об ошибке, типа, данные не соответствуют маске и ля-ля-ля... Причем форму нельзя даже закрыть, пока не удалишь все цифры или не введешь корректные данные.

Конечно с одной стороны терпимо и можно приноровится, но все же криво. Пробовал повесить на поле и кнопки обработку ошибок (на количество символов), но все равно она не срабатывает, потому что Акс умудряется проверить маску ввода до того как обработчик до нее доберется (на поле без маски все работет).

Как перехватывать это стандартное сообщение об ошибке и подменять своим? Или может быть есть альтернативный способ реализации задачи - аналог маски ввода?

Спасибо

  Ответить  
 
 автор: Lukas   (16.03.2010 в 15:01)   личное сообщение
 
 

Попробуйте здесь перехватить:

Private Sub Form_Error(DataErr As Integer, Response As Integer)

End Sub

  Ответить  
 
 автор: Евген   (16.03.2010 в 15:18)   личное сообщение
 
 

Спасибо за наводку! Сейчас да, первым на ошибку реагирует обработчик, но следом все равно вылезает стандартное сообщение Акса :-(((

  Ответить  
 
 автор: Lukas   (16.03.2010 в 15:20)   личное сообщение
 
 

Response для этого надо пользовать

  Ответить  
 
 автор: Евген   (16.03.2010 в 15:28)   личное сообщение
 
 

Еще раз огромное спасибо!

Вставил в код строку "Response = acDataErrContinue" и все заработало как надо.

  Ответить  
 
 автор: Мюллер   (16.03.2010 в 15:02)   личное сообщение
 
 

На афтерАпдэйт поля аналилровать что именно туда введено. Если не соответствует - сообщение и заставить заново водить.

  Ответить  
 
 автор: Lukas   (16.03.2010 в 15:06)   личное сообщение
 
 

афтерАпдэйт не должен наступить, если маске не соответствует.

  Ответить  
 
 автор: Мюллер   (16.03.2010 в 15:08)   личное сообщение
 
 

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

  Ответить  
 
 автор: Евген   (16.03.2010 в 15:22)   личное сообщение
 
 

Дело в том, что эти 6 цифр должны выглядеть так 000-000. Если убрать маску ввода, то придется пользователя заставлять тыкать на "минус"

  Ответить  
 
 автор: Мишок   (16.03.2010 в 15:27)   личное сообщение
 
 

что мешает после третьго знака программно запихнуть минус

  Ответить  
 
 автор: Евген   (16.03.2010 в 15:30)   личное сообщение
 
 

Наверное, мешает бедное воображение и отсутствие опыта в программировании ((( Но я учусь!

  Ответить  
 
 автор: snipe   (16.03.2010 в 15:35)   личное сообщение
 
 

А что мешает при получении фокуса установить курсор в начало

  Ответить  
 
 автор: Евген   (16.03.2010 в 15:38)   личное сообщение
 
 

С этим проблем нет, при получении фокуса курсор устанавливается на 1-ую позицию поля. Глюк был только если количество цифр было меньше положенного

  Ответить  
 
 автор: Мишок   (16.03.2010 в 15:56)   личное сообщение
 
 

Mid(str, 1, 3) & "-" & Mid(str, 4)

  Ответить  
 
 автор: Lukas   (16.03.2010 в 16:01)   личное сообщение
 
 

Зачем хранить в базе лишние символы?
Тем более добавлять их программно?
Надо отобразить с дефисом - форматируй отображаемое значение как хочется(нужно) в отчете.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList