Office中国论坛/Access中国论坛

标题: [求助]这样的搜索查询该怎样做呀? [打印本页]

作者: 静儿    时间: 2006-7-20 23:17
标题: [求助]这样的搜索查询该怎样做呀?
表字段中的值有不定个数的关键字,比如记录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 因此不被筛选出来。

这该怎么做?
作者: wwwwa    时间: 2006-7-20 23:39
用INSTR函数
作者: andymark    时间: 2006-7-20 23:44
条件之间用","分隔,用IN语句也可以实现,
作者: 静儿    时间: 2006-7-21 00:39
问题是查询条件是多条件,需要将它分解,如将“a;d;e ”   分解成:a   d   e  来搜索。

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

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

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


作者: 静儿    时间: 2006-7-21 01:01
是在一个表的一个字段中搜索的。海狸地址在哪里知道吗?或者标题是什么呢?
作者: fan0217    时间: 2006-7-21 02:39
看看这个帖子,对你会有帮助的。

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

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


作者: sgrshh29    时间: 2006-7-21 03:24
已经找到。多条件之间用空格分割。分二种情况,“与”和“或”。

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编辑过]


作者: wuaza    时间: 2006-7-21 05:51
用动态SQL做的一个例子。[attach]19164[/attach]

作者: 静儿    时间: 2006-7-21 06:05
wuaza,这就是我要的结果,太好了。谢谢!






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