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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Не корректная работа .SetFocus текстового поля
 
 автор: NewMaN   (07.02.2008 в 23:46)   личное сообщение
 
 

Здравствуйте.
Вообщем грубо говоря есть два текстовых поля в форме, в которые вводятся числовые значения.
Необходимо проверять не превышает ли значение "hstg5" значение "lstg5". Если первышает - выдать сообщение, стереть введенные данные, и установить фокус на этом же поле.

Private Sub hstg5_AfterUpdate()
Dim lstg5, hstg5 As Integer
lstg5 = Me![lstg5]
hstg5 = Me![hstg5]
If lstg5 > hstg5 Then
MsgBox ("Введите корректное значение")
Me![hstg5].Value = ""
hstg5.SetFocus
End If
End Sub

Вроде всё должно работать, но нет!!! Фокус не возвращается на это же поле, а перекидывается на любое соседнее. Однако если же прописать SetFocus на любое другое поле, то он соверешнно нормально устанавливается там. В чем дело, так и не понял!!!

  Ответить  
 
 автор: ГлазастыйМышь   (08.02.2008 в 00:34)   личное сообщение
 
 

надо повесить процедуру проверки на BeforeUpdate, а если неверно, то отменять изменения (Cancel=true)

  Ответить  
 
 автор: osmor   (08.02.2008 в 09:27)   личное сообщение
 
 

Цитата из Help

События Выход (Exit) и Потеря фокуса (LostFocus) для изменяемого элемента управления
возникают после событий До обновления (BeforeUpdate) и После обновления (AfterUpdate):

До обновления >  После обновления >  Выход >  Потеря фокуса


т.е все работает как заявлено, на событие после обновления Вы переводите фокус в поле hstg5, затем происходят события Выход > Потеря фокуса, которые переводят фокус в другой контрол.

  Ответить  
 
 автор: akkorn   (08.02.2008 в 22:34)   личное сообщение
 
 

просто поменяйте местами команды
Me![hstg5].Value = ""
и
hstg5.SetFocus

т.е. получится так:

...
MsgBox ("Введите корректное значение")
hstg5.SetFocus
Me![hstg5].Value = ""
End If
...

может в этом случае сработает как задумано

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