Office中国论坛/Access中国论坛

标题: 请教个关于窗体筛选的问题 [打印本页]

作者: smilingkiss    时间: 2013-11-21 11:00
标题: 请教个关于窗体筛选的问题
窗体有一个文本字段,我想通过vba筛选出来,把里面不包含“aaa”的筛选出来(空字段保留),代码如下:

Me.Form.Filter = "nz([字段],0)=0 or (not [字段] Like '*aaa*') "
Me.Form.FilterOn = True



但是提示出错

若是单独分开筛选:
Me.Form.Filter = "nz([字段],0)=0 "
Me.Form.FilterOn = True


或者

Me.Form.Filter = "not [字段] Like '*aaa*' "
Me.Form.FilterOn = True


都可以通过,为什么用“or”合起来就不行了呢?

作者: smilingkiss    时间: 2013-11-21 11:05
如果只用:
Me.Form.Filter = "not [字段] Like '*aaa*' "
Me.Form.FilterOn = True
筛选结果会连空字段都筛选掉的,这个不符合目的
作者: 轻风    时间: 2013-11-21 11:46
提示出错,什么提示?
作者: smilingkiss    时间: 2013-11-21 12:03
轻风 发表于 2013-11-21 11:46
提示出错,什么提示?

Me.Form.Filter = "nz([字段],0)=0 or (not [字段] Like '*aaa*') "
Me.Form.FilterOn = True

这个提示:运行时错误 ‘3075’,语法错误(操作符丢失) 在查询表达式‘nz([字段],0)=0 or (not [字段] Like '*aaa*')’中

Me.Form.Filter = "nz([字段],0)=0 or not [字段] Like '*aaa*' "
Me.Form.FilterOn = True
这个提示:运行时错误 ‘3709’,所有记录中均未找到搜索关键字
作者: smilingkiss    时间: 2013-11-21 12:05
轻风 发表于 2013-11-21 11:46
提示出错,什么提示?

轻风哥,需要我传个附件上来吗?

作者: 轻风    时间: 2013-11-21 13:50
你不如直接这样:
  1. Me.Form.Filter = "not NZ([字段]) Like '*aaa*' "
  2. Me.Form.FilterOn = True
复制代码

作者: smilingkiss    时间: 2013-11-21 14:05
轻风 发表于 2013-11-21 11:46
提示出错,什么提示?

附件上传了

作者: smilingkiss    时间: 2013-11-21 14:10
轻风 发表于 2013-11-21 13:50
你不如直接这样:

搞掂了,轻风哥,谢谢你啊!
作者: 轻风    时间: 2013-11-21 16:39
smilingkiss 发表于 2013-11-21 12:03
Me.Form.Filter = "nz([字段],0)=0 or (not [字段] Like '*aaa*') "
Me.Form.FilterOn = True

错误‘3075’,那是因为你把括号打成中文的了。
作者: 轻风    时间: 2013-11-21 16:46
本帖最后由 轻风 于 2013-11-21 16:50 编辑

还有类型不匹配,是因为nz([字段],0)返回的是文本类型的0(可能是因为字段类型的缘故),所以应该写成nz([字段],0)='0'我一般都是用nz([字段])='',返回空字符串。

作者: smilingkiss    时间: 2013-11-22 08:59
轻风 发表于 2013-11-21 16:46
还有类型不匹配,是因为nz([字段],0)返回的是文本类型的0(可能是因为字段类型的缘故),所以应该写成nz([ ...

轻风哥,真的非常感谢你啊,逐一把我代码有误的地方解读出来,小弟受教啦!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3