Office中国论坛/Access中国论坛

标题: 求教:另一类实现单字段多条件模糊查询 [打印本页]

作者: aalons    时间: 2009-2-7 00:19
标题: 求教:另一类实现单字段多条件模糊查询
今天看到一个单字段多条件模糊查询,就想到是不是能实现这样的?结果试了下,没实现,只能问问网上的大侠们了。                        
实现要求:选择欲查询字段名称(也可不选择,直接在代码中指定),然后在文本框输入多个查询条件(条件不分顺序,条件之间用空格分隔),即可得到所有的查询结果.如输入“111 222 333”则可同时得到111 222 333这三组数据。                                            
同样要取消查询,只要把文本框的字符清空即可。
作者: ACMAIN_CHM    时间: 2009-2-7 00:32
其实如果你换个术语的话,可能自己就能找到答案了。这不是"模糊查询",而是 "数值是否等于指定列表中几个数值中的一个。" SQL中有这个运算符 IN.

以下摘自 Microsoft Access 2003 Help
In 运算符

判断表达式的数值是否等于指定列表中几个数值中的一个。

语法
expr [Not] In(value1, value2, . . .)

例如,可用 In 运算符来判断哪些订单被发往指定的地区集合:
SELECT *
FROM Orders
WHERE ShipRegion In ('Avon','Glos','Som')

============================================
好,现在回到你的问题。

文本框输入多个查询条件(条件不分顺序,条件之间用空格分隔)
输入“111 222 333”则可同时得到111 222 333这三组数据。


设 me.textbox1.value = "111 222 333"
先  s = replace (me.textbox1.value,"  "," ") '把两个空格变成一个空格,防止手工输入的时候多输入一个。 谨慎一点儿的话,就多执行几次,循环到len(s)不再减速少为止。
再 s = replace(s," ",","),把空格替换为, ,此时 s = 111,222,333
之后 sSql = "select * from yourTable where id in ("& s &")"
如果是字符型的话,注意加上''



******************
*  一切皆有可能  *
******************

.

.
QQ群 48866293 / 12035577 / 7440532 / 13666209
http://forum.csdn.net/SList/Access .
http://www.accessbbs.cn/bbs/index.php .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
http://www.office-cn.net .
.
http://www.office-cn.net/home/space.php?uid=141646 .
作者: todaynew    时间: 2009-2-7 09:44
设 me.textbox1.value = "111 222 333"
先  s = replace (me.textbox1.value,"  "," ") '把两个空格变成一个空格,防止手工输入的时候多输入一个。 谨慎一点儿的话,就多执行几次,循环到len(s)不再减速少为止。
再 s = replace(s," ",","),把空格替换为, ,此时 s = 111,222,333
之后 sSql = "select * from yourTable where id in ("& s &")"
如果是字符型的话,注意加上''
ACMAIN_CHM 发表于 2009-2-7 00:32


我觉得不如用掩码设置文本框,这样可以减少输入错误,代码也简洁一些。
作者: Henry D. Sy    时间: 2009-2-7 10:45
直接用“,”代替空格更省事




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