设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[查询] [求助]这样的搜索查询该怎样做呀?

[复制链接]
跳转到指定楼层
1#
发表于 2006-7-20 23:17:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
表字段中的值有不定个数的关键字,比如记录1是:  a;b;c ;d    记录2是:a;b      记录3是:d    记录4是:w;t;q;s

现在在窗体中输入多个要查询的关键字: a;d;e    我需要查询出表中记录值带有:a   d   e   的记录。结果为:记录1记录2记录3。由于记录4不包含a d 和e 因此不被筛选出来。

这该怎么做?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-7-20 23:39:00 | 只看该作者
用INSTR函数
3#
发表于 2006-7-20 23:44:00 | 只看该作者
条件之间用","分隔,用IN语句也可以实现,
4#
 楼主| 发表于 2006-7-21 00:39:00 | 只看该作者
问题是查询条件是多条件,需要将它分解,如将“a;d;e ”   分解成:a   d   e  来搜索。

另一方面它不能用in,应该用like  比如记录1是“a;b;c ;d”  其中有a符合,因此需要将它选上。

我就搞糊涂了,不知该怎么做。
5#
发表于 2006-7-21 00:56:00 | 只看该作者
如果是单个字段,就是所谓的多条件模糊查询,坛里海狸有个例子.如果是全局的,曾做过一个,不知道放什么地方去了,再找找看.

[此贴子已经被作者于2006-7-20 16:56:22编辑过]

6#
 楼主| 发表于 2006-7-21 01:01:00 | 只看该作者
是在一个表的一个字段中搜索的。海狸地址在哪里知道吗?或者标题是什么呢?
7#
发表于 2006-7-21 02:39:00 | 只看该作者
看看这个帖子,对你会有帮助的。

http://www.office-cn.net/forum.php?mod=viewthread&tid=41219&replyID=&skin=1

[此贴子已经被作者于2006-7-20 18:39:34编辑过]

8#
发表于 2006-7-21 03:24:00 | 只看该作者
已经找到。多条件之间用空格分割。分二种情况,“与”和“或”。

1、“与”

Private Sub Text0_Change()
If IsNull(Me.Text0) Then Exit Sub
    Dim i, IntStar As Integer
    Dim strCx As String
    If KeyCode = vbKeySpace Then Exit Sub     '分隔符不为空格时,可省去
    IntStar = Text0.SelStart
    For i = 0 To UBound(Split(Text0.Text, " "))
        strCx = strCx & "InStr(字段名, '" & Split(Text0.Text, " ")(i) & "') > 0 And "
    Next i
    Me.Child0.Form.Filter = strCx & True
    Me.Child0.Form.FilterOn = True
    IntStar = IntStar + 1
    Text0.SelStart = IntStar
End Sub

2、“或”,就是你所要的情况

Private Sub Text0_Change()
If IsNull(Me.Text0) Then Exit Sub
    Dim i, IntStar As Integer
    Dim strCx As String
    If KeyCode = vbKeySpace Then Exit Sub     '分隔符不为空格时,可省去
    IntStar = Text0.SelStart
    For i = 0 To UBound(Split(Text0.Text, " "))
        strCx = strCx & "InStr(字段名, '" & Split(Text0.Text, " ")(i) & "') > 0 Or "
    Next i
    Me.Child0.Form.Filter = strCx & False
    Me.Child0.Form.FilterOn = True
    IntStar = IntStar + 1
    Text0.SelStart = IntStar
End Sub

如果需要实例,请做个模拟库上传。

[此贴子已经被作者于2006-7-20 19:27:17编辑过]

9#
发表于 2006-7-21 05:51:00 | 只看该作者
用动态SQL做的一个例子。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
10#
 楼主| 发表于 2006-7-21 06:05:00 | 只看该作者
wuaza,这就是我要的结果,太好了。谢谢!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-10 20:22 , Processed in 0.132253 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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