Запретить переход к следующей записи при нажатии Enter?

StackOverflow https://stackoverflow.com/questions/543147

Вопрос

У меня есть форма в 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 вещи, которые нужно сделать:

  1. Для свойства цикла формы установлено значение «Текущая запись».
  2. Для свойства предварительного просмотра ключа формы установлено значение Да.
  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top