我希望能够允许用户在表单/报表上应用多个过滤器。让我进一步解释。
我有一个子表单(嵌入在表单中),它已经由我创建的选项框过滤。我想添加另一个选项框..是否可能。
为了简化我的要求,让我进一步解释。在我的子表单中,您可以按我的记录状态(即打开,关闭,待处理等)进行筛选。我想添加另一个选项框,其中包含记录的优先级(低,中,高,等)。 。
我认为我的解释很清楚。
任何关于如何这样做的建议将不胜感激。
谢谢,
甲
答案 0 :(得分:3)
这只是您在VBA中使用连接进行的单个过滤器。我的标准代码看起来像这样。请注意,我为Description字段添加了一个过滤器,您没有提到过,只是这样您就可以看到如何使用LIKE * something *进行过滤,有时也称为模糊搜索。如果您不需要,可以删除该代码。
Private Sub cboStatus_AfterUpdate()
Call FilterSubform
End Sub
Private Sub cboPriority_AfterUpdate()
Call FilterSubform
End Sub
Private Sub cboDescription_AfterUpdate()
Call FilterSubform
End Sub
Private Sub FilterSubform()
Dim strWhere as String
'Make string
If Nz(Me.cboStatus, "") <> "" Then
strWhere = strWhere & "[Status] = '" & Me.cboStatus & "' AND "
End If
If Nz(Me.cboPriority, "") <> "" Then
strWhere = strWhere & "[Priority] = '" & Me.cboPriority & "' AND "
End If
If Nz(Me.cboDescription, "") <> "" Then
strWhere = strWhere & "[Description] LIKE '*" & Replace(Me.cboDescription, "'", "''") & "*' AND "
End If
'Apply filter
If strWhere <> "" Then
strWhere = Left(strWhere, Len(strWhere)-5) 'Remove the extra AND
Me.subForm.Form.Filter = strWhere
Me.subForm.Form.FilterOn = True
Else
Me.subForm.Form.Filter = ""
Me.subForm.Form.FilterOn = False
End If
End Sub
答案 1 :(得分:0)
如果您的记录源是查询,那么您可以将查询中的字段条件设置为窗体或子窗体中的控件。然后在做出选择之后,您可以使用&#34; After Update&#34;事件。
Me.Requery
通过这样做,您可以根据需要选择过多的记录。