设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 4353|回复: 2
打印 上一主题 下一主题

[Access本身] 窗体中如何在筛选的基础上进行第二、第三次筛选

[复制链接]
跳转到指定楼层
1#
发表于 2012-2-7 19:32:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 软件下载 于 2012-2-7 19:39 编辑



如上图
如果鼠标点中第三个字段,然后点“筛选”,在第二、第三次或更多筛选后,最后结果会是多次筛选后的总结果,比如我先筛选“*管理*”,再筛选“*经理*”,就会把“管理部经理”筛选出来。

可是如果上面4个文本框的每个更改事件代码如下:
me.filter="字段3 like '*" & me.text1.text & "*'"   (第二个文本框就是text2,以此类推)
me.filteron=true
这样在第一个文本框中输入“管理”,第二个文本框再输入“经理”后
下面的结果除了会出来“管理部经理”外,还会出来如“销售部经理”这样的。
就是说第二个筛选不是在第一个筛选的基础上再次筛选
请问如何做到第二个筛选在第一个筛选的基础上筛选?

有点拗口,不好意思。

补充提问:上图是我那个千万级数据的查询界面,在实际操作中我发现如果关键字只是2个字母,速度会非常快,如果是3-4个字母就有点卡,如果5个以上就卡得不行了,所以我想把输入的关键字按2个字母分解成若干个小关键字,可实际操作时发现这样没啥区别,难道在第二次筛选时窗体还会重新计算第一次的筛选过程吗?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2012-2-22 15:18:15 | 只看该作者
其实你一个文本框就解决问题了,第一次输入管理部,第二次输入管理部经理 。
附窗体筛选代码

Me.Refresh
    Dim strWhere As String
    strWhere = ""
   
     If IsNull(Me.Text0) Then
        MsgBox "请输入要查询的简称!", vbExclamation, "警告!"
    End If
   
    If Not IsNull(Me.Text0) Then
        strWhere = strWhere & "([F3] like '*" & Me.Text0 & "*') AND "
    End If
   
              
'==========================================================
    If Len(strWhere) > 0 Then
        strWhere = Left(strWhere, Len(strWhere) - 5)
    End If

    Me.all1.Form.FilterOn = True
    Me.all1.Form.Filter = strWhere
3#
发表于 2012-2-22 17:50:09 | 只看该作者
二楼nxjswt同志处理问题的方法是正确的,但还可以在此基础上有更好的方法。具体处理可参见《批判》一文。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-25 07:31 , Processed in 0.107183 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表