以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=183424)

--  作者:moseser
--  发布时间:2022/11/4 14:13:00
--  [求助]
以下为我的源代码, 目的是,通过 在文本框输入内容,进行快速筛选;

比如 输入【钢筋 t -m3】,这代表,项目名称、项目特征、计量单位、单位工程、部位 中包含 ”钢筋“、“t”字眼,不包含”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 not (项目名称 like \'%" & s & "%\' or 项目特征 like \'%" & s & "%\' or 计量单位 like \'%" & s & "%\' or 单位工程 like \'%" & s & "%\' or 部位 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 

    
End If

我现在想改善下次代码,就是  其中 项目名称、项目特征、计量单位、单位工程…… ,这些列我想做成动态的,
比如,通过对话框进行勾选,对某些列,进行筛选,清单如何编写代码?

这个地方感觉很复杂,思路我有,只是 双引号,单引号,如何连接,什么的,老搞不明白

如果,有一个lrs (这个是list,就是我获取的需要查询的列的名称) ,请大神指教如何编写代码,谢谢




--  作者:有点蓝
--  发布时间:2022/11/4 14:56:00
--  
dim 选择的列() as string = {"项目名称","项目特征",......}
……
            If n > 1 Then 
                s = right(s, n - 1)
dim f2 as string = ""
for each s3 as string in 选择的列
f2 = f2 & " or " & s3 & " like  \'%" & s & "%\'"
next
f2 = f2.substring(3)
                
                filter = filter & " and not (" & f2 & ")" 
            End If