Foxtable(狐表)用户栏目专家坐堂 → [求助]关于多条件筛选编写代码


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

主题:[求助]关于多条件筛选编写代码

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


加好友 发短信
等级:三尾狐 帖子:622 积分:5303 威望:0 精华:0 注册:2022/4/4 14:42:00
[求助]关于多条件筛选编写代码  发帖心情 Post By: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)     ) ………………

进行重复筛选

问题:后面的这段代码如何编写,我老是写不对

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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


加好友 发短信
等级:三尾狐 帖子:622 积分:5303 威望:0 精华:0 注册:2022/4/4 14:42:00
回复:(有点蓝)dim filter as string = "1=1"dim sp...  发帖心情 Post By:2022/9/22 15:54:00 [只看该作者]

dim filter as string = "1=1"
这一句是什么意思?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/22 16:08:00 [只看该作者]

辅助合并条件用,减少代码,提高效率

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


加好友 发短信
等级:三尾狐 帖子:622 积分:5303 威望:0 精华:0 注册:2022/4/4 14:42:00
回复:(有点蓝)辅助合并条件用,减少代码,提高效率...  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:622 积分:5303 威望:0 精华:0 注册:2022/4/4 14:42:00
回复:(moseser)回复:(有点蓝)辅助合并条件用,减...  发帖心情 Post By:2022/9/23 9:52:00 [只看该作者]

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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:622 积分:5303 威望:0 精华:0 注册:2022/4/4 14:42:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:622 积分:5303 威望:0 精华:0 注册:2022/4/4 14:42:00
回复:(有点蓝)辅助合并条件用,减少代码,提高效率...  发帖心情 Post By:2022/9/23 10:04:00 [只看该作者]

感觉还是不对

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

6楼7楼一样的效果

 回到顶部