Предотвратить переход к следующей записи при нажатии Enter? - PullRequest
9 голосов
/ 12 февраля 2009

У меня есть форма в Access 2003, которая должна работать только с одной записью. Я могу установить для свойства Cycle значение Current Record, но форма все равно переходит к следующей записи, когда я нажимаю Enter. Моей первой мыслью была собственность KeyPreview, но я ее не вижу. Другая моя мысль - это, может быть, событие KeyPress или KeyUp, но я подумал, что могу спросить в случае непредвиденных последствий. Есть идеи?

Ответы [ 6 ]

6 голосов
/ 13 февраля 2009

Свойство Cycle влияет только на клавишу TAB.

Для управления поведением клавиши ввода, которая является глобальным свойством.

Перейдите в Инструменты / Параметры - вкладка «Клавиатура» и в «Переместить после ввода» выберите «Следующее поле»

Существуют события KeyPress и KeyDown, которые вы также можете использовать для перехвата клавиши Enter, но это больше работы.

3 голосов
/ 24 января 2014

Это также можно сделать в 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

1 голос
/ 24 июля 2014

Моментальные клавиши, такие как 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
    

    Я нашел это во время поиска в Интернете и не беру на себя ответственность за код, но я не знаю, где я его нашел. У меня работает!

0 голосов
/ 15 апреля 2016

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

0 голосов
/ 02 февраля 2010

Вы можете добавить приведенный ниже код в событие формы «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
0 голосов
/ 13 февраля 2009

Свойство Cycle работает только с клавишей Tab.

Есть два варианта, которые вы можете использовать.

Вы можете перехватить клавишу ввода в KeyDown / KeyUp / KeyPressed
- ИЛИ -
Вы можете отфильтровать источник данных по той записи, которую вы хотите отредактировать, и отключить добавление новых записей через эту форму.

...