Субформа не запрашивает после изменения списка - PullRequest
0 голосов
/ 08 января 2019

В настоящее время я использую Access 2007 для создания формы, в которой поле со списком фильтрует редактируемую подчиненную форму.

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

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

Private Sub cboProjectSelect_AfterUpdate()

  Me!Project_Tracker_Subform.Form.Requery

End Sub

1 Ответ

0 голосов
/ 08 января 2019

Ваш текущий код AfterUpdate просто запрашивает у подформы запрос существующих критериев фильтрации, что приведет к отображению тех же записей.

В вашем случае вы хотите обновить критерии фильтра подчиненной формы, чтобы они ссылались на новое значение, выбранное в ComboBox. Для этого вам понадобится что-то вроде этого:

Dim mssql As String

If Len(Me.cboProjectSelect.Value & "") > 0 Then
    mssql = "[Project_ID] = " & Me.cboProjectSelect.Value
    Me.Project_Tracker_Subform.Form.Filter = mssql
    Me.Project_Tracker_Subform.Form.FilterOn = True
End If

Этот код будет обновлять подчиненную форму только в том случае, если в ComboBox выбрано значение (т. Е. Если пользователь очищает значение ComboBox, оператор If предотвратит обновление подчиненной формы)

Затем этот код устанавливает новый фильтр и указывает подчиненной форме выполнить фильтр с FilterOn = True.

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

Else
    Me.Project_Tracker_Subform.Form.FilterOn = False
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...