以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]关于多条件筛选编写代码 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=179981) |
|
-- 作者:moseser -- 发布时间:2022/9/21 17:52:00 -- [求助]关于多条件筛选编写代码 我想在一个文本框textbox内输入内容 ,如 混凝土 C30 M3 其间用空格分开,表示多条件, 如 dim value as string = e.Form.Controls("TextBox1").value dim sp() as string = value.split(" ") 用空格断开 然后点击确认按钮后,进行表格的筛选 即: ( 类别列 包含 sp(0) 或者 项目名称列 包含 sp(0) 或者 项目特征列 包含 sp(0) 或者 工作内容列 包含 sp(0) ) 且 ( 类别列 包含 sp(1) 或者 项目名称列 包含 sp(1 或者 项目特征列 包含 sp(1) 或者 工作内容列 包含 sp(1) ) 且 ( 类别列 包含 sp(2) 或者 项目名称列 包含 sp(2 或者 项目特征列 包含 sp(2) 或者 工作内容列 包含 sp(2) ) ……………… 进行重复筛选 问题:后面的这段代码如何编写,我老是写不对
|
|
-- 作者:有点蓝 -- 发布时间:2022/9/22 8:43:00 -- dim filter as string = "1=1" dim sp() as string = value.split(" ") for each s as string in sp filter = filter & " and (类别 like \'%" & s & "%\' or 项目名称 like \'%" & s & "%\' or .........)"next |
|
-- 作者:moseser -- 发布时间:2022/9/22 15:54:00 -- 回复:(有点蓝)dim filter as string = "1=1"dim sp...
|
|
-- 作者:有点蓝 -- 发布时间:2022/9/22 16:08:00 -- 辅助合并条件用,减少代码,提高效率 |
|
-- 作者:moseser -- 发布时间:2022/9/23 9:48:00 -- 回复:(有点蓝)辅助合并条件用,减少代码,提高效率... 我想再扩展一下 如果 文字前面带有”-“ ,则表示 这些列内不含这个字 如: 混凝土 m3 -圈梁 这表示,下面列 包含混凝土 、m3 ,但不包含圈梁的 行 如下写的代码,不包含 部分是不是不对?? If e.TextBox.Text IsNot Nothing Then Dim filter As String = "1=1" Dim sp() As String = e.TextBox.Text.split(" ") For Each s As String In sp If s.StartsWith("-") Then Dim n As Integer = s.Length If n > 1 Then s = right(s, n - 1) filter = filter & " and (项目名称 like \'%" & s & "%\' and 项目特征 like \'%" & s & "%\' and 计量单位 like \'%" & s & "%\' and 单位工程 like \'%" & s & "%\' and 部位 like \'%" & s & "%\' )" End If Else filter = filter & " and (项目名称 like \'%" & s & "%\' or 项目特征 like \'%" & s & "%\' or 计量单位 like \'%" & s & "%\' or 单位工程 like \'%" & s & "%\' or 部位 like \'%" & s & "%\' )" End If Next Tables("清单_Table1").Filter = filter & " and 三级目录 = \'NotNamed\' " End If |
|
-- 作者:moseser -- 发布时间:2022/9/23 9:52:00 -- 回复:(moseser)回复:(有点蓝)辅助合并条件用,减... If e.TextBox.Text IsNot Nothing Then Dim filter As String = "1=1" Dim sp() As String = e.TextBox.Text.split(" ") For Each s As String In sp If s.StartsWith("-") Then Dim n As Integer = s.Length If n > 1 Then s = right(s, n - 1) filter = filter & " and (项目名称 not like \'%" & s & "%\' and 项目特征 not like \'%" & s & "%\' and 计量单位 not like \'%" & s & "%\' and 单位工程 not like \'%" & s & "%\' and 部位 not like \'%" & s & "%\' )" End If Else filter = filter & " and (项目名称 like \'%" & s & "%\' or 项目特征 like \'%" & s & "%\' or 计量单位 like \'%" & s & "%\' or 单位工程 like \'%" & s & "%\' or 部位 like \'%" & s & "%\' )" End If Next Tables("清单_Table1").Filter = filter & " and 三级目录 = \'NotNamed\' " End If
|
|
-- 作者:moseser -- 发布时间:2022/9/23 9:57:00 -- 知道了,是不是把 not 写在前面? filter = filter & " and not (项目名称 like \'%" & s & "%\' or 项目特征 like \'%" & s & "%\' or 计量单位 like \'%" & s & "%\' or 单位工程 like \'%" & s & "%\' or 部位 like \'%" & s & "%\' )"
|
|
-- 作者:moseser -- 发布时间:2022/9/23 10:04:00 -- 回复:(有点蓝)辅助合并条件用,减少代码,提高效率... 感觉还是不对 |
|
-- 作者:有点蓝 -- 发布时间:2022/9/23 10:09:00 -- 6楼7楼一样的效果 |