我有一个带有“某些”组合框和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
我想在模块中转换此代码,以便我可以为表单的所有组合框调用一次该模块,而不是为每个单独的组合框都重复此代码。
我该如何实现?!
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
这允许您将控件名称传递给子对象,并执行相同的操作。但是,您会注意到我必须完全限定该表格。我认为,最好是始终完全合格(特别是出于您的原因)。我还省略了重新查询逻辑-将其添加到此查询中,或将其保留在调用它的代码中。
享受!