以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于模糊搜索  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=177449)

--  作者:wugang0131
--  发布时间:2022/5/23 10:18:00
--  关于模糊搜索
蓝老师,“专家查询” 表的 “专家查询”窗口加一个文本框,欲实现多字段的模糊搜索,在Textchange事件添加如下代码:

For Each c1 As String In e.Form.Controls("TextBox1").Text.Split(" ")
    Dim tbl As Table = Tables("专家查询_Table1")
    If c1 = "" Then
        tbl.Filter = ""
    Else
        c1 = "\'%" & c1 & "%\'"
        tbl.Filter = "姓名 Like " & c1 & " Or 专业 Like " & c1 & " Or 研究领域 Like " & c1
    End If
Next

这串代码无法实现多字段模糊搜索,请问该如何改进?谢谢蓝老师

--  作者:有点蓝
--  发布时间:2022/5/23 10:30:00
--  
dim s as string = "1=2"

For Each c1 As String In e.Form.Controls("TextBox1").Text.Split(" ")
    If c1 > "" Then
        c1 = "\'%" & c1 & "%\'"
        s = s & " or 姓名 Like " & c1 & " Or 专业 Like " & c1 & " Or 研究领域 Like " & c1
    End If
Next
    Dim tbl As Table = Tables("专家查询_Table1")
tbl.Filter = s
[此贴子已经被作者于2022/5/23 10:30:17编辑过]

--  作者:wugang0131
--  发布时间:2022/5/24 9:03:00
--  
谢谢蓝老师,您的代码是把所有符合条件的人选都列出来,但是如果要逐次剔除一些条件怎么办呢?比如先搜索出专业为“工”的人选,然后在搜索出来的结果中,再搜索研究领域为“磷化工”的人选?谢谢蓝老师
--  作者:有点蓝
--  发布时间:2022/5/24 9:13:00
--  
    Dim tbl As Table = Tables("专家查询_Table1")
if tbl.Filter > "" then
tbl.Filter = "(" & tbl.Filter & ") and (" & s & ")"
else
tbl.Filter = s
end if