Foxtable(狐表)用户栏目专家坐堂 → [求助]求助各位大大,如何实现又like,又in的查询筛选


  共有2998人关注过本帖树形打印复制链接

主题:[求助]求助各位大大,如何实现又like,又in的查询筛选

帅哥哟,离线,有人找我吗?
colahou
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:17 积分:220 威望:0 精华:0 注册:2012/10/9 12:36:00
[求助]求助各位大大,如何实现又like,又in的查询筛选  发帖心情 Post By:2016/10/24 9:15:00 [只看该作者]

本人没什么基础,特请教各位大大如何实现。
有一个窗口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和表列里的内容谁多,只要有一项对应上就可以筛选出来。

请问这样的代码应该怎么写?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/24 9:28:00 [只看该作者]

建议创建一个表,专门存储这个专业。1楼这种存储方式到后期查询统计会非常麻烦。

 回到顶部
帅哥哟,离线,有人找我吗?
colahou
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:17 积分:220 威望:0 精华:0 注册:2012/10/9 12:36:00
  发帖心情 Post By:2016/10/24 9:45:00 [只看该作者]

是专门有张表的,就是目录树的来源,dropbox1和专业列的内容来源都是来源这张表,现在就是想实现根据dorpbox1的内容筛选专业列里符合条件的行

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/24 9:53:00 [只看该作者]

再创建一个表,不是存储目录树的来源,而是存储表x选择后的结果,相当于是表x的子表

 回到顶部
帅哥哟,离线,有人找我吗?
colahou
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:17 积分:220 威望:0 精华:0 注册:2012/10/9 12:36:00
  发帖心情 Post By:2016/10/24 10:15:00 [只看该作者]

那怎么写只要有一项符合就能筛选出来呢?不管谁的内容更多?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:17 积分:220 威望:0 精华:0 注册:2012/10/9 12:36:00
  发帖心情 Post By:2016/10/24 11:12:00 [只看该作者]

谢谢斑斑指点, Dim filter As String = "1=2 "什么意思?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/24 11:41:00 [只看该作者]

占位用,目的是减少代码判断的工作量

 回到顶部
帅哥哟,离线,有人找我吗?
colahou
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:17 积分:220 威望:0 精华:0 注册:2012/10/9 12:36:00
  发帖心情 Post By:2016/10/24 11:54:00 [只看该作者]

感谢,您的代码已可以实现我的想法。非常感谢

 回到顶部