Foxtable(狐表)用户栏目专家坐堂 → 关于模糊搜索


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

主题:关于模糊搜索

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


加好友 发短信
等级:幼狐 帖子:146 积分:1238 威望:0 精华:0 注册:2019/12/29 16:20:00
关于模糊搜索  发帖心情 Post By: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

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

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


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


加好友 发短信
等级:幼狐 帖子:146 积分:1238 威望:0 精华:0 注册:2019/12/29 16:20:00
  发帖心情 Post By:2022/5/24 9:03:00 [只看该作者]

谢谢蓝老师,您的代码是把所有符合条件的人选都列出来,但是如果要逐次剔除一些条件怎么办呢?比如先搜索出专业为“工”的人选,然后在搜索出来的结果中,再搜索研究领域为“磷化工”的人选?谢谢蓝老师

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


加好友 发短信
等级:超级版主 帖子:106242 积分:540333 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部