Как запросить комбинированный список каждый раз, когда добавляется новая запись или обновляется существующая запись? - PullRequest
0 голосов
/ 19 мая 2019

Я пытаюсь запросить комбинированный список в форме в Access, чтобы он обновлялся каждый раз A) Любая запись обновляется в таблице B) Новая запись создается.

Я понимаю из этот вопрос о том, что мне нужно использовать метод запроса, но я не понимаю, как использовать событие для его запуска.

Пока что я открыл свою форму и изменилСвойство «Имеет модуль» для «Да».Затем я открыл редактор VBA, нашел свою форму и дважды щелкнул мышью, чтобы открыть модуль, связанный с формой.Затем под опцией сравнения базы данных я набрал «Item.ContainerCombo.Requery» (имя таблицы, имя выпадающего списка, метод запроса.)

enter image description here

Я знаю, что это ничего не сделает, потому что это не связано с событием, но я не знаю, какое событие использовать.Кто-нибудь может помочь?

Пожалуйста, наберитесь терпения, поскольку у меня нет опыта использования VBA в Microsoft Access.

1 Ответ

1 голос
/ 19 мая 2019

Как правило, VBA (не для сравнения с VB, VB.Net или VBS, но с кодом приложения MS Office) часто считается языком триггера в этом коде запуска событий.

В MS Access эти события происходят в основном в формах и отчетах, часто из-за взаимодействия с пользователем. Вам не нужно переходить непосредственно в редактор VBA для написания необходимого кода, но найдите событие (AfterUpdate, BeforeInsert, OnClick, OnCurrent, OnOpen, OnClose), необходимое в Property Лист на вкладке Событие , а затем включите код, который автоматически напишет оболочку подпрограммы, а затем добавит строку .Requery. Фактически, более простые строки, такие как .Requery, можно обрабатывать даже с помощью макросов (не путать с макросами Excel). Методы доступа не запускаются вне подпрограммы или функции, такой как ваша попытка.

В частности, вы упоминаете:

, чтобы [combobox] обновлялся каждый раз A) Любая запись обновляется в таблице B) Новая запись создается

Это не совсем ясно относительно времени и местоположения необходимого запроса запроса. Поэтому вам нужно ответить:

  1. Когда обновляет или вставляет эту таблицу B? Пользователем, автоматическим кодом или внешним событием? Это идентифицирует тип события триггера (то есть AfterUpdate против OnClick).

  2. Где эта таблица 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
...