在多个字段的 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.OpenReportWhereCondition 打开报告? 是的,我就是这样做的。问题是它不会忽略空字段,而是过滤到空字段。 【参考方案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 筛选中打开报表的主要内容,如果未能解决你的问题,请参考以下文章

SAP3558报表字段长度是不是可以修改

Access 2010:根据特定组合框条件过滤字段中包含多个值的报表

在access报表中,按"编号"字段前四位分组统计每组记录的平均年龄,并将统计结果显示在组页脚节区.怎么做?

在 Access 2013 中将两个报表合并为一个

润乾报表 多数据源如何比较两个字段值?

MS Access 如何将焦点集中在特定的多个报表实例上