在多个字段的 Access 筛选中打开报表
Posted
技术标签:
【中文标题】在多个字段的 Access 筛选中打开报表【英文标题】:Opening reports in Access filtering on multiple fields 【发布时间】:2015-01-27 21:02:28 【问题描述】:我正在尝试在 MS Access 2010 中打开已根据表单上的九个可能字段进行过滤的报告;但是,如果其中一个字段为空,我希望过滤器忽略该字段。我能够基于 3 个可能的字段来执行此操作,方法是使用组合 6 个“if 语句”来遍历所有组合的可能性,以查看指定的字段组合是否有信息,然后过滤那些指定的字段。如果只有 3 个字段,这很容易做到。
我现在想对表单上的 9 个字段执行相同的操作,但这需要 362,880 个“if 语句”组合。只有当这些字段中包含信息时,是否有其他方法可以打开报表并基于多个字段进行过滤?
【问题讨论】:
您是否使用DoCmd.OpenReport
和WhereCondition 打开报告?
是的,我就是这样做的。问题是它不会忽略空字段,而是过滤到空字段。
【参考方案1】:
检查您的每个搜索文本框,并仅基于那些值不为 Null 的文本构建一个 WhereCondition 字符串。
此示例仅基于 2 个文本框,但可以轻松扩展到更多。
Dim strWhereCondition As String
If Not IsNull(Me.txtSearchID) Then
' ID is numeric datatype
strWhereCondition = strWhereCondition & " AND ID=" & Me.txtSearchID.Value
End If
If Not IsNull(Me.txtSearchDept) Then
' Dept is text datatype
strWhereCondition = strWhereCondition & " AND Dept='" & Me.txtSearchDept.Value & "'"
End If
If Len(strWhereCondition) > 0 Then
' discard leading " AND "
strWhereCondition = Mid(strWhereCondition, 6)
End If
DoCmd.OpenReport "rptFoo", WhereCondition:=strWhereCondition
【讨论】:
完美。谢谢汉斯普!以上是关于在多个字段的 Access 筛选中打开报表的主要内容,如果未能解决你的问题,请参考以下文章
Access 2010:根据特定组合框条件过滤字段中包含多个值的报表