Foxtable(狐表)用户栏目专家坐堂 → 多值快速搜索难题


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

主题:多值快速搜索难题

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


加好友 发短信
等级:二尾狐 帖子:517 积分:3383 威望:0 精华:0 注册:2013/1/3 17:08:00
多值快速搜索难题  发帖心情 Post By:2016/10/11 16:48:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


文本框中输入不确定的几个值,怎么分割并搜索表

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/11 16:55:00 [只看该作者]

Dim sarr() As String = e.Form.Controls("TextBox1").Text.split(" ")
Dim filter As String = "1=1"
For Each s As String In sarr
    filter &= " and 第一列 like '%" & s & "%'"
Next

Tables("表A").Filter = filter

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


加好友 发短信
等级:二尾狐 帖子:517 积分:3383 威望:0 精华:0 注册:2013/1/3 17:08:00
  发帖心情 Post By:2016/11/5 16:15:00 [只看该作者]

For Each dc As Col In Tables("表A").Cols '遍历表的所有列
    If dc.DataCol.IsDate OrElse dc.DataCol.IsBoolean OrElse dc.DataCol.IsNumeric Then  '如果是时间列,逻辑列,数值列
        Continue For    '排除
    End If
    If Filter > "" Then
        Filter  = Filter & " Or "
    End If
    For Each s As String In sarr
        Filter = Filter  & " (1=1 and [" & dc.Name & "] Like '*" & s.Replace("*","[*]").Replace("%","[%]")  & "*')"    '根据控件值迷糊筛选
    Next
    
Next

Tables("表A").Filter = Filter  '将数据筛选出来

我想将字符列都可以多值模糊搜索,要怎么改,谢谢老师

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/5 16:29:00 [只看该作者]

Dim sarr() As String = {"a","b","c"}
Dim Filter As String = "1=2"
For Each dc As Col In Tables("表A").Cols '遍历表的所有列
    If dc.DataCol.IsDate OrElse dc.DataCol.IsBoolean OrElse dc.DataCol.IsNumeric Then  '如果是时间列,逻辑列,数值列
        Continue For    '排除
    End If
        'Filter  = Filter & " Or "
    For Each s As String In sarr
        Filter = Filter  & "or ([" & dc.Name & "] Like '*" & s.Replace("*","[*]").Replace("%","[%]")  & "*')"    '根据控件值迷糊筛选
    Next
    
Next

Output.Show(Filter )

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


加好友 发短信
等级:二尾狐 帖子:517 积分:3383 威望:0 精华:0 注册:2013/1/3 17:08:00
  发帖心情 Post By:2016/11/5 16:55:00 [只看该作者]

谢谢老师
我想要的效果:
1.在文本框输入A值,表格中所有字符列筛选出包含A值的记录,但记录比较多,需求进一步搜索
2.再A 后面空格,再输入B值,则在原来搜索出来的基础上再筛选出所有字符列包含B值的记录,可能还需要输入空格C,空格D

二楼是那样的效果了,就是单列的,想扩展到所有的字符列上


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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/5 16:59:00 [只看该作者]

Dim sarr() As String = {"a","b","c"}
Dim Filter As String = "1=1"
For Each dc As Col In Tables("表A").Cols '遍历表的所有列
    If dc.DataCol.IsDate OrElse dc.DataCol.IsBoolean OrElse dc.DataCol.IsNumeric Then  '如果是时间列,逻辑列,数值列
        Continue For    '排除
    End If
    Filter  = Filter & " and ("
    Dim f2 As String = " 1=2 "
    For Each s As String In sarr
        f2 = f2  & "or ([" & dc.Name & "] Like '*" & s.Replace("*","[*]").Replace("%","[%]")  & "*')"    '根据控件值迷糊筛选
    Next
    Filter  &= f2 & ")"
Next

Output.Show(Filter )

 回到顶部