以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]请教如何搜索一列中的多个数值 [已解决]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92720)

--  作者:tyconlance
--  发布时间:2016/11/11 8:01:00
--  [求助]请教如何搜索一列中的多个数值 [已解决]
请教一下老师这个筛选功能如何实现:
想针对某一列,比如产品编号列,做一个筛选,需要一次筛选出多个产品编号,比如200个产品编号,
做一个文本框,把200个编号粘贴进文本框,一次性筛选出来之后,再输出报表
非常感谢 盼回复
[此贴子已经被作者于2016/12/3 14:32:53编辑过]

--  作者:有点蓝
--  发布时间:2016/11/11 8:44:00
--  
1、假设编号之间用逗号分割

Dim txt As String = Forms("窗口1").Controls("Textbox1").Text

Tables("表A").Filter = "编号 in (\'" & txt.Replace(",","\',\'") & "\')"

2、增加一个逻辑列,通过逻辑列进行筛选,如筛选已勾选的

Tables("表A").Filter = "逻辑列 = true"

--  作者:tyconlance
--  发布时间:2016/11/28 17:22:00
--  
多谢老师 已经按您说的办法搞定了 我换成了替换回车换行符号
Filter = "[产品编号] in (\'" & txt.Replace(vbcrlf,"\',\'").TrimEnd(",") & "\')"

另外想请请教一下,如何动态模糊筛选很多个值,这些值都是从TextBox1 里输入进去的, 还能用IN 或用LIKE 吗? 有没有办法动态合成?
Filter = "[列名] in (\'" & txt.Replace(vbcrlf,"%\',\'%").TrimEnd(",\'%") & "\')"

--  作者:有点蓝
--  发布时间:2016/11/28 17:50:00
--  
Dim arr() As String = txt.Replace(vbcrlf,"\',\'").TrimEnd(",").split(",")
Dim str As String = "1=2"
For Each c As String In arr
    str &= " or [产品编号] like \'%" & c & "%\' "
Next
Filter  = str