Запретить переход к следующей записи при нажатии Enter?
-
23-08-2019 - |
Вопрос
У меня есть форма в Access 2003, которая должна работать только с одной записью.я могу установить Cycle
собственность Current Record
, но форма по-прежнему переходит к следующей записи, когда я нажимаю Enter.Моей первой мыслью было KeyPreview
недвижимость, но я ее не вижу.Другая моя мысль, может быть, KeyPress
или KeyUp
событие, но я решил спросить на случай непредвиденных последствий.Есть идеи?
Решение
Свойство Cycle влияет только на клавишу TAB.
Для управления поведением клавиши Enter это глобальное свойство.
Перейдите в «Инструменты/Параметры» — вкладка «Клавиатура» и в разделе «Переместить после ввода» выберите «Следующее поле».
Существуют события KeyPress и 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
Моментные ключи, такие как ВКЛАДКА, Альтернативный вариант, ПгУП, ПГДн, Входить нажимаются в конце добавления записи (в основном после последнего поля), база данных автоматически сохраняет всю информацию, введенную вами в форму, и стирает поля, чтобы вы могли ввести следующее значение.В результате данные сохраняются, но форма выглядит пустой.
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
Если вы зайдете в «Параметры доступа» на странице файла, перейдите в «Настройки клиента», и первый параметр позволит вам выбрать, куда будет меняться фокус при нажатии клавиши «Ввод».По крайней мере в Access 2013.