Как установить фокус на элемент формы

Shurshit
Дата: 20.12.2011 16:05:39
Никак не получается установить фокус на поле.

Я хочу, чтобы, когда пользователь ничего не вводит в поле DH_NOM выходило сообщение и фокус оставался в том же поле.
Написал код
  If IsNull(DH_NOM.Value) Then
    MsgBox "необходимо ввести значение!"
    Me.DH_NOM.SetFocus
    Exit Sub
  End If


Сообщение появляется, но курсор переходит в следующее поле...
alvk
Дата: 20.12.2011 16:17:50
Shurshit,

для этого нужно прыгнуть на другое поле, а потом вернуться, а лучше использовать событие "выход", там есть cancel = true, очень удобно.
abend
Дата: 20.12.2011 16:40:08
Почитайте про цепочку событий в Access, что за чем следует: в вашем случае вы внутри события (AfterUpdate?) ставите фокус в поле, в котором и произошло событие. Код обрабатывается, но после этого еще происходит несколько событий, в частности - переход к следующему контролу. Т.е. вы фокус на это поле ставите ДО того, как он ушел на следующее. Лучший выход - не давать курсору уходить с поля вообще, для этого -
alvk
лучше использовать событие "выход", там есть cancel = true, очень удобно
serega1576
Дата: 20.12.2011 17:20:58
Shurshit
Никак не получается установить фокус на поле.


Cancel=True-пробуй :)

Option Compare Database
Dim Foc As Boolean

Private Sub Form_AfterUpdate()
Foc = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
If Foc Then
If Len(Me.НужноеПоле1) <> 0 Then
Else
MsgBox "Ошибка, данные не введены"
Cancel = True
Me.НужноеПоле1.SetFocus
End If
Else
End If
End Sub
mds_world
Дата: 20.12.2011 17:26:11
Используйте событие BeforeUpdate поля с управлением параметром Cancel при несоответствии данных
Shurshit
Дата: 20.12.2011 18:54:47
Всем спасибо!

Эта процедура работает:
Private Sub DH_NOM_Exit(Cancel As Integer)
Dim t As DAO.Recordset
  If IsNull(DH_NOM.Value) Then
    MsgBox "Необходимо ввести номер!"
    Cancel = True
  End If
End Sub


BeforeUpdate, кажется, пропускает пустое значение при вводе новой записи