MS Access - 创建一个模块,使用 VBA 按不同的组合框过滤子表单

MS Access - Creating a module that filter subform by different comboboxes using VBA

我有一个带有 "some" 组合框和 1 个子表单的表单,该表单当前仅由 combobox1 使用以下 VBA 代码过滤:

Private Sub cmbType_AfterUpdate()

Dim strSQL As String

strSQL = "SELECT [qryStore].[Type], [qryStore].[Model], [qryStore].[SN], " _
& "[qryStore].[ID], [qryStore].[Position], " _
& "FROM qryStore " _
& "WHERE (((qryStore.Type)='" & Me.cmbType & "'));"

Me.subfrmStore.Form.RecordSource = strSQL
Me.subfrmStore.Form.Requery

End Sub

我想在模块中转换这段代码,这样我就可以为表单的所有组合框调用一次模块,而不是为每个单独的组合框重复这段代码..

我怎样才能做到这一点?!

这里:

Public Sub UpdateSubFormFromControl(ByRef ControlName as String)

    Dim strSQL As String
    strSQL = "SELECT [qryStore].[Type], [qryStore].[Model], [qryStore].[SN], " _
    & "[qryStore].[ID], [qryStore].[Position], " _
    & "FROM qryStore " _
    & "WHERE (((qryStore.Type)='" & Forms!MyFormName.Controls(ControlName).Value & "'));"

End Sub

这允许您将控件名称传递给子程序并执行完全相同的操作。但是,您会注意到我必须完全限定表格。我认为始终完全符合条件是更好的做法(特别是出于像您这样的原因)。

我还省略了重新查询逻辑 - 将其添加到此或将其留在调用它的代码中。

尽情享受吧!