组合框更改后不重新查询子窗体

时间:2019-01-08 13:57:10

标签: vba forms ms-access

我当前正在使用Access 2007创建一个表单,其中组合框过滤了可编辑子表单。

子表单基于一个查询,该查询从组合框中获取一个Project_ID,并根据该Project_ID号过滤子表单表。在窗体视图中时,我可以更改组合框,并在手动刷新后过滤子窗体。但是,子窗体不会随组合更改自动过滤。

我不知道出了什么问题。我已经尝试了多个VBA版本,但没有任何效果。更改后,我目前正在使用此VBA脚本来展开子窗体。

Private Sub cboProjectSelect_AfterUpdate()

  Me!Project_Tracker_Subform.Form.Requery

End Sub

1 个答案:

答案 0 :(得分:-1)

您当前的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