2014-02-20 3 views
1

Я создал форму в MS Access 2010 с помощью несвязанного поля со списком для выбора записей в таблице по именам и всплывающей формы для вставки новых записей в базу данных. Поскольку поле со списком не обновляется самостоятельно, я попытался принудительно обновить с помощью Forms![main_form].[unbound_cmb].Requery и Forms![main_form].Form.Refresh/Requery во всплывающем окне «Сохранить» кнопку OnClick, но ни один из трех подходов не работает.MS Access 2010: Unbound combo box не будет обновляться

Итак, как я могу обновить поле со списком после добавления новой записи/нажатия кнопки «Сохранить»?

+0

Не уверен в этом 100%, но когда вы открываете всплывающее окно, форма с выпадающим списком теряет фокус. Не могли бы вы добавить событие Form_GotFocus в основную форму, которая запрашивает записи для combobox? Или у вас может быть таймер, который проверяет, закрыто ли всплывающее окно ... но вы должны иметь возможность запрашивать комбобокс при закрытии. Надеюсь, кто-то предоставит лучшее решение ... –

+0

После изменения порядка команд макроса из 'mod_update()' (моя функция VBA) и закрытия всплывающего окна для закрытия и 'mod_update()', поле со списком обновляется, но выбирает новая запись не обновляет форму при выборе старых записей –

ответ

0

Johannes,

Что вы используете для заполнения поля со списком? таблицу или запрос?

Кроме того, я не уверен, что вам нужно здесь. Я использую VBA Command.Requery для обновления каскадных комбинированных полей в событии After Update.

У меня также подобная база данных для регистрации людей на сайтах экспертизы. У меня есть всплывающая форма для ввода данных, всплывающее окно для новых сайтов тестирования и форма, которая использует два несвязанных комбо для фильтрации отчета. Обе мои комбо сами обновляются, и я сделал это, используя запросы.

// EDIT Вы будете хотеть, чтобы прочитать это * * ** * ** * ** * **
Немного больше о Command.Requery, Requery используется, когда вам нужно снова выполнить запрос, обычно против другого ключа в вашем запросе. Хотя может показаться, что он работает иногда, вероятно, он работает только потому, что либо Access автоматически обновляет запрос по таймеру, либо потому, что вы вызываете обновление, закрывая форму. Проблема, с которой вы сталкиваетесь, вызвана тем, что ваш запрос не обновляется, а не потому, что он не требует надлежащего исправления.

См. Мой комментарий ниже для простой работы вокруг этой проблемы. Если по какой-то причине вам нужно всегда иметь форму с открытым списком, тогда попробуйте обновить команду на кнопке сохранения. Тем не менее, я настоятельно рекомендую вам следовать методу в моем комментарии, поскольку он работал для меня без каких-либо проблем.

+0

Я использую запрос 'SELECT [main_data] .ID, [main_data] .name FROM main_data ORDER BY [main_data] .name;' для заполнения поля со списком –

+0

Я только что использовал следующее, и он обновил combobox (и, как я набираю это, я вижу разницу, которую мы имеем), обратите внимание на!. Формы! [Form1]! [Unbound_cmb] .Requery DoCmd.Close acForm, Me.Name –

+0

'Forms! [Form1]! [Unbound_cmb] .Requery' ничего не изменил, но' DoCmd.Close acForm, Me.Name' выбрасывает ошибку «неверное использование Me» –

Смежные вопросы