Foxtable(狐表)用户栏目专家坐堂 → 多关键词模糊查找


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

主题:多关键词模糊查找

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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
多关键词模糊查找  发帖心情 Post By:2016/12/21 19:11:00 [只看该作者]

参考自定义录入界面二做了模糊查询窗口,但是发现不能多个关键词查询,请问如何做到?另外自身带的查找功能限制了列名,只能一列一列查询,能不能实现整个表格多个关键词模糊查询

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


加好友 发短信
等级:狐神 帖子:4773 积分:34673 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2016/12/21 19:14:00 [只看该作者]

搜索“全表模糊查找”

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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
  发帖心情 Post By:2016/12/21 19:31:00 [只看该作者]

可以多个关键词么?

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/21 20:04:00 [只看该作者]

以下是引用luckbetter333在2016/12/21 19:31:00的发言:
可以多个关键词么?

 

那你就用空格分割多个关键字

 

Dim str As String = e.Form.Controls("TextBox1").Text
Dim filter As String = "1=2"
For Each dc As Col In CurrentTable.Cols
    For Each s As String In str.split(" ")
        filter &= " Or convert(" & dc.Name & ",'System.String') like '%" & s & "%'"
    Next
Next
CurrentTable.Filter = filter


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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
  发帖心情 Post By:2016/12/22 9:33:00 [只看该作者]

按照您的代码做的,一搜索就什么都没了, 不知道哪里出的问题 。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多关键词产品模糊搜索.rar

已经上传, 请帮忙看看。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/12/22 9:59:00 [只看该作者]

正确的代码:

Dim str As String = e.Form.Controls("TextBox1").Text
Dim filter As String = "1=2"
For Each dc As Col In Tables("产品模糊查找_Table1").Cols
    For Each s As String In str.split(" ")
        filter &= " Or convert(" & dc.Name & ",'System.String') like '%" & s & "%'"
    Next
Next
Tables("产品模糊查找_Table1").Filter = filter
[此贴子已经被作者于2016/12/22 10:02:25编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/12/22 10:02:00 [只看该作者]

CurrentTable是什么,你都搞混了
建议先看一遍置顶的视频教程,然后再动手设计,否则你寸步难行,即使在别人的帮助下做出来,系统质量也堪忧。

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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
  发帖心情 Post By:2016/12/22 10:07:00 [只看该作者]

谢谢狐爸,单位想一月份能上线,只能先取捷径,有时间一定从头学习。

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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
  发帖心情 Post By:2016/12/22 10:17:00 [只看该作者]

试了下,不是预期的效果,增加空格增加关键词后,反而增加了产品范围,是不是应该改成多关键词准确搜索?

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/22 10:43:00 [只看该作者]

参考代码

 

Dim str As String = e.Form.Controls("TextBox1").Text
Dim t As Table = Tables("产品模糊查找_Table1")
If str = "" Then
    t.Filter = ""
Else
    Dim ary() As String = str.split(" ")
    Dim idxs As String = "-1,"
    For Each r As DataRow In t.DataTable.dataRows
        Dim count As Integer = 0
        For Each s As String In ary
            For Each c As Col In t.Cols
                If Cstr(r(c.name)).Contains(s) Then
                    count += 1
                    Exit For
                End If
            Next
        Next
        If count = ary.Length Then
            idxs &= r("_Identify") & ","
        End If
    Next
    t.Filter = "_Identify in (" & idxs.Trim(",") & ")"
End If


 回到顶部
总数 12 1 2 下一页