以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]求助各位大大,如何实现又like,又in的查询筛选 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91988) |
-- 作者:colahou -- 发布时间:2016/10/24 9:15:00 -- [求助]求助各位大大,如何实现又like,又in的查询筛选 本人没什么基础,特请教各位大大如何实现。 有一个窗口X,窗口内有一张表x,表内有一列“专业”,该列内容在输入窗口以目录树形式输入多级内容包括A,a1,a2,……B,b1,b2……等 窗口内有一个dropbox1控件,对应窗口表“专业”列内容,该控件采用目录树形式输入多级内容,包括A,a1,a2,……B,b1,b2……等 窗口内的查询按钮希望实现根据dorpbox1内容进行筛选并载入,现在的代码为 Dim txt As String = e.Form.Controls("dropbox1").Text Dim tbl As Table = Tables("X_x") If txt = "" Then tbl.Filter = "" Else txt = "\'%" & txt & "%\'" tbl.Filter =" 专业 Like " & txt End If 该代码有一个问题就是当“专业”列的内容为A,a1,a2,而dropbox1内容为A,a1时可以筛选,但当dropbox1内容为A,a1,a2,……B,b1,b2时就无法筛选,用in的话感觉后面的情况可以筛选,但是前面的这种又筛选不出。希望实现只要不管dorpbox1和表列里的内容谁多,只要有一项对应上就可以筛选出来。 请问这样的代码应该怎么写?
|
-- 作者:有点蓝 -- 发布时间:2016/10/24 9:28:00 -- 建议创建一个表,专门存储这个专业。1楼这种存储方式到后期查询统计会非常麻烦。 |
-- 作者:colahou -- 发布时间:2016/10/24 9:45:00 -- 是专门有张表的,就是目录树的来源,dropbox1和专业列的内容来源都是来源这张表,现在就是想实现根据dorpbox1的内容筛选专业列里符合条件的行 |
-- 作者:有点蓝 -- 发布时间:2016/10/24 9:53:00 -- 再创建一个表,不是存储目录树的来源,而是存储表x选择后的结果,相当于是表x的子表 |
-- 作者:colahou -- 发布时间:2016/10/24 10:15:00 -- 那怎么写只要有一项符合就能筛选出来呢?不管谁的内容更多? |
-- 作者:有点蓝 -- 发布时间:2016/10/24 10:31:00 -- 要么用in ,要么用like,没有办法一起用。而且数据多的话这两种用法效率都非常差,能避免就避免。 Dim txt As String = e.Form.Controls("dropbox1").Text Dim tbl As Table = Tables("X_x") If txt = "" Then tbl.Filter = "" Else Dim filter As String = "1=2 " Dim str() As String = txt.Split(",") For Each s As String In str filter &="or 专业 Like \'%" & s & "%\'" Next tbl.Filter = filter End If |
-- 作者:colahou -- 发布时间:2016/10/24 11:12:00 -- 谢谢斑斑指点, Dim filter As String = "1=2 "什么意思? |
-- 作者:有点蓝 -- 发布时间:2016/10/24 11:41:00 -- 占位用,目的是减少代码判断的工作量 |
-- 作者:colahou -- 发布时间:2016/10/24 11:54:00 -- 感谢,您的代码已可以实现我的想法。非常感谢 |