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 |