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

问题描述 投票:0回答:1

我有一个带有“某些”组合框和1个子窗体的表单,当前仅由带有以下VBA代码的combobox1过滤过:

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

我想在模块中转换此代码,以便我可以为表单的所有组合框调用一次该模块,而不是为每个单独的组合框都重复此代码。

我该如何实现?!

ms-access filter module access-vba subform
1个回答
2
投票
这里:

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

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

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

享受!

© www.soinside.com 2019 - 2024. All rights reserved.