我正在尝试在MS Access 2010中打开一个基于表单上九个可能字段进行过滤的报表;但是,如果其中一个字段为空,我希望过滤器忽略该字段。我能够基于3个可能的字段,通过组合6“if语句”遍历所有组合的可能性来查看指定的字段组合是否有信息,然后对这些指定的字段进行过滤。如果只有3个字段,这很容易做到。
我现在想要对表单上的9个字段执行相同的操作,但这需要362,880个“if语句”组合。是否有其他方法可以打开报告并仅基于多个字段对其进行过滤?只有这些字段中包含信息?
答案 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