Предотвратить переход к следующей записи при нажатии 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 дела:

  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

Если вы перейдете в параметры доступа на странице файл, перейдите в настройки клиента, и первая настройка позволит вам выбрать, где ваш фокус изменится, когда вы нажмете enter. По крайней мере в Access 2013.