Access 2007 Разделенная форма VBA: acNewRec при открытии предотвращает вкладку через форму - действует так, как первое поле не «выбрано» - PullRequest
0 голосов
/ 29 октября 2010

Я надеюсь, что кто-то может помочь мне или, по крайней мере, помочь найти обходной путь.

Я использую функцию разделенной формы Access 2007 и запускаю приведенный ниже код для события Form_Open, а также после двух событий button_click.Код работает нормально при запуске после событий button_click, но когда он запускается по событию form_open, это вызывает проблемы.

Если форма открыта и пользователь вводит текст в первое поле, он / она не может использовать клавишу Tab или мышь для выбора следующего поля формы.Пользователь застревает в первом поле формы до нажатия клавиши Esc, чтобы отменить ввод данных.Чтобы успешно ввести данные в первое поле формы, когда форма открыта, пользователь должен сначала выбрать другое поле формы, затем повторно выбрать первое поле формы, а затем ввести текст в первое поле формы.После этой ерунды пользователь МОЖЕТ выбрать следующее поле формы с помощью Tab или мыши.Это должно выполняться один раз при каждом запуске формы.Тот же код VBA для событий button_click работает нормально.

Примечательно: при первом открытии формы НИКОГДА из полей формы в разделе таблицы не отображается «Выбрано».Когда пользователь начинает вводить данные в первое поле формы, маркер «новая запись» (*) перемещается во вторую строку, как и должно быть, но в первой строке не отображаются вводимые данные.Это нечетное поведение.

После выполнения поля очистки щелкните другое поле, вернитесь к первому обходному пути, описанному выше, в таблице данных отображаются правильно выбранные поля и данные в том виде, в котором они вводятся.

Есть идеи?Это ошибка?Есть ли простой обходной путь, такой как выполнение обхода выбора поля через VBA при открытии формы?

Любая помощь очень ценится.

Код:

DoCmd.ApplyFilter , "([Contractor].[CheckOutStamp] Is Null)"
DoCmd.GoToRecord , "", acNewRec

Ссылка на mdb: https://docs.google.com/leaf?id=0B-jx09cwIQDsYWM2MzMzMDQtYjUzNi00N2E5LWFjYTktNzFiYWYzMDZiYWU1&hl=en&authkey=CPPmoMEF

1 Ответ

0 голосов
/ 29 октября 2010

Некоторые мысли:

Попробуйте переместить его из OnOpen в OnLoad. События в OnOpen могут происходить до фактической загрузки данных, тогда как OnLoad происходит после того, как это уже сделано.

Кроме того, вы можете просто установить свойство Filter формы на [Contractor].[CheckOutStamp] Is Null, установить для FilterOn значение Yes и установить для формы DataEntry, что означает, что при открытии по умолчанию используется новая запись, и она не загружается. из старых записей. Открыв ее, вы можете изменить режим редактирования / добавления формы на любой другой.

...