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
这允许您将控件名称传递给子程序并执行完全相同的操作。但是,您会注意到我必须完全限定表格。我认为始终完全符合条件是更好的做法(特别是出于像您这样的原因)。
我还省略了重新查询逻辑 - 将其添加到此或将其留在调用它的代码中。
尽情享受吧!
我有一个带有 "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
这允许您将控件名称传递给子程序并执行完全相同的操作。但是,您会注意到我必须完全限定表格。我认为始终完全符合条件是更好的做法(特别是出于像您这样的原因)。
我还省略了重新查询逻辑 - 将其添加到此或将其留在调用它的代码中。
尽情享受吧!