在多个字段的Access过滤中打开报告

时间:2015-01-27 21:02:29

标签: ms-access filter

我正在尝试在MS Access 2010中打开一个基于表单上九个可能字段进行过滤的报表;但是,如果其中一个字段为空,我希望过滤器忽略该字段。我能够基于3个可能的字段,通过组合6“if语句”遍历所有组合的可能性来查看指定的字段组合是否有信息,然后对这些指定的字段进行过滤。如果只有3个字段,这很容易做到。

我现在想要对表单上的9个字段执行相同的操作,但这需要362,880个“if语句”组合。是否有其他方法可以打开报告并仅基于多个字段对其进行过滤?只有这些字段中包含信息?

1 个答案:

答案 0 :(得分: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