Предотвратить переход к следующей записи при нажатии Enter?
у меня есть форма в Access 2003, которая должна работать только с одной записью. Я могу установить Cycle
свойство Current Record
, но форма все равно переходит к следующей записи, когда я нажмите Enter. Моей первой мыслью было:KeyPreview
свойство, но я не вижу его. Моя другая мысль, возможно,KeyPress
или KeyUp
событие, но я подумал, что спрошу в случае непреднамеренных последствий. Есть идеи?
6 ответов
свойство Cycle влияет только на клавишу TAB.
для управления поведением ключа Enter, который является глобальным свойством.
перейдите на вкладку Инструменты / Параметры - клавиатура и на "переместить после ввода "выберите" следующее поле"
есть нажатия клавиш и события KeyDown, которые вы можете использовать, чтобы поймать клавишу Enter тоже, но это больше работы.
Это также можно сделать в VBA.
Application.GetOption "Move After Enter" 'get current setting
Application.SetOption "Move After Enter", 0 'don't move
Application.SetOption "Move After Enter", 1 'Next Field
Application.SetOption "Move After Enter", 2 'Next Record
http://www.pcreview.co.uk/forums/enter-key-moving-next-field-t3454281.html
момент ключи, как TAB, Alt, PgUP, PgDn, Enter нажимаются в конце добавления записи (после последнего поля в основном), база данных автоматически сохраняет всю информацию, введенную в форму, и стирает поля, чтобы вы могли ввести следующее значение. Итак, происходит то, что данные сохраняются, но форма выглядит пустой.
3 дела:
- свойство цикла формы установлено в текущая запись.
- свойство предварительного просмотра ключа формы установлено в Да.
-
добавьте следующий код в событие KeyDown формы:
'33 - PgUp; 34 - PgDown; 9 - Tab; 18=Alt; 13=Enter Select Case KeyCode Case 33, 34, 18, 9, 13 KeyCode = 0 Case Else 'Debug.Print KeyCode, Shift End Select
Я нашел это, просматривая интернет и не берите кредит/ответственность за код, но я не знаю, где я его нашел. Работает на меня!
свойство Cycle работает только с клавишей Tab.
есть два варианта, вы могли бы преследовать.
вы можете поймать клавишу Enter в KeyDown / KeyUp / KeyPressed
- Или -
Вы можете отфильтровать источник данных до одной записи, которую вы хотите изменить, и отключить добавление новых записей через эту форму.
вы можете добавить ниже код в свою форму "BeforeUpdate" событие. Если вы хотите перейти к следующей записи, он попросит пользователя сохранить, а затем закрыть форму, прежде чем они смогут перейти к другой записи.
Private Sub Form_BeforeUpdate(Cancel As Integer)
Select Case MsgBox("Save?", vbYesNo)
Case vbYes
DoCmd.Close
Case vbNo
Cancel = True
End Select
End Sub
Если вы перейдете в параметры доступа на странице файл, перейдите в настройки клиента, и первая настройка позволит вам выбрать, где ваш фокус изменится, когда вы нажмете enter. По крайней мере в Access 2013.