Ms access 在Access筛选中打开多个字段上的报告

Ms access 在Access筛选中打开多个字段上的报告,ms-access,filter,Ms Access,Filter,我试图在MS Access 2010中打开一个报告,该报告已根据表单上的九个可能字段进行筛选;但是,如果其中一个字段为空,我希望过滤器忽略该字段。我能够基于3个可能的字段进行此操作,方法是使用组合6“if语句”遍历所有可能的组合,以查看指定的字段组合是否包含信息,然后对这些指定的字段进行筛选。如果只有3个字段,那么这很容易做到 我现在想对表单上的9个字段做同样的事情,但这需要362880个“if语句”组合。是否有其他方法可以仅在多个字段中包含信息的情况下打开报表并基于这些字段进行筛选?检查每个搜

我试图在MS Access 2010中打开一个报告,该报告已根据表单上的九个可能字段进行筛选;但是,如果其中一个字段为空,我希望过滤器忽略该字段。我能够基于3个可能的字段进行此操作,方法是使用组合6“if语句”遍历所有可能的组合,以查看指定的字段组合是否包含信息,然后对这些指定的字段进行筛选。如果只有3个字段,那么这很容易做到


我现在想对表单上的9个字段做同样的事情,但这需要362880个“if语句”组合。是否有其他方法可以仅在多个字段中包含信息的情况下打开报表并基于这些字段进行筛选?

检查每个搜索文本框,并仅基于那些值不为Null的字段构建WhereCondition字符串

此示例仅基于2个文本框,但可以轻松扩展到更多文本框

Dim strwhere条件为字符串
如果不是IsNull(Me.txtSearchID),那么
'ID是数字数据类型
strWhereCondition=strWhereCondition&“和ID=“&Me.txtSearchID.Value
如果结束
如果不为null(Me.txtSearchDept),则
'部门是文本数据类型
strWhereCondition=strWhereCondition&“和Dept=”&Me.txtSearchDept.Value&“
如果结束
如果Len(strWhereCondition)>0,则
“放弃前导”和
strWhereCondition=Mid(strWhereCondition,6)
如果结束
DoCmd.OpenReport“rptFoo”,其中条件:=strWhereCondition

是否使用
DoCmd.OpenReport
和where条件打开报告?是的,我就是这样做的。问题是,它不会忽略空字段,而是过滤到空的字段。完美。谢谢你,汉斯!