Как правило, VBA (не для сравнения с VB, VB.Net или VBS, но с кодом приложения MS Office) часто считается языком триггера в этом коде запуска событий.
В MS Access эти события происходят в основном в формах и отчетах, часто из-за взаимодействия с пользователем. Вам не нужно переходить непосредственно в редактор VBA для написания необходимого кода, но найдите событие (AfterUpdate
, BeforeInsert
, OnClick
, OnCurrent
, OnOpen
, OnClose
), необходимое в Property Лист на вкладке Событие , а затем включите код, который автоматически напишет оболочку подпрограммы, а затем добавит строку .Requery
. Фактически, более простые строки, такие как .Requery
, можно обрабатывать даже с помощью макросов (не путать с макросами Excel). Методы доступа не запускаются вне подпрограммы или функции, такой как ваша попытка.
В частности, вы упоминаете:
, чтобы [combobox] обновлялся каждый раз A) Любая запись обновляется в таблице B) Новая запись создается
Это не совсем ясно относительно времени и местоположения необходимого запроса запроса. Поэтому вам нужно ответить:
Когда обновляет или вставляет эту таблицу B? Пользователем, автоматическим кодом или внешним событием? Это идентифицирует тип события триггера (то есть AfterUpdate
против OnClick
).
Где эта таблица B обновляет или вставляет? На самой форме вы используете или другую форму? Связана ли сама форма с таблицей B? Это идентифицирует местоположение триггера (то есть, форма A AfterUpdate
, а не форма B AfterUpdate
).
- Если триггер запускается за пределами формы, в которой находится выпадающий список, вам необходимо изменить относительную ссылку (
myCombboxName.Requery
или Me.myCombboxName.Requery
) на абсолютную ссылку: Forms!myFormName!myCombboxName.Requery
.
Как только тип и местоположение триггера определены, вы можете поместить курсор под «Листом свойств» в соответствующем событии соответствующей формы и затем включить код, например, в одну из следующих подпрограмм:
Private Sub Form_AfterUpdate()
Forms!myFormName!myCombboxName.Requery
End Sub
Private Sub Form_AfterInsert()
Forms!myFormName!myCombboxName.Requery
End Sub
Private Sub myButton_OnClick()
Forms!myFormName!myCombboxName.Requery
End Sub