Foxtable(狐表)用户栏目专家坐堂 → 如何正确匹配数据进行精准筛选


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

主题:如何正确匹配数据进行精准筛选

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
如何正确匹配数据进行精准筛选  发帖心情 Post By:2022/3/15 1:06:00 [只看该作者]

窗体表:

设定为sqltable 并绑定 sel ect * from {干部花名册}

窗体加载时判断:
If _usergroup.Contains("办公室") Or _usergroup.Contains("干部") Then
    Tables(e.Form.Name & "_table1").Filter=""
Else
    If _userroles.Contains("管理") Then
        Tables(e.Form.Name & "_table1").Filter="所属室组='" & _usergroup & "'"
    Else
        Tables(e.Form.Name & "_table1").Filter="工作单位='" & _usergroup & "'"
    End If
End If

运行效果如下:

 
此主题相关图片如下:11.png
按此在新窗口浏览图片

模糊检索框代码如下:

Dim txt As String = e.Form.Controls("TextBox12").Text
Dim bb As  String
If txt = "" Then
    Tables(e.Form.Name & "_table1").Filter = ""
Else
    txt = "'%" & txt & "%'"
    'MessageBox.Show("0")
    Dim s As String = "1=2"
    For Each dc As Col In Tables(e.Form.Name & "_table1").Cols
        'MessageBox.Show(dc.Name)
        If dc.IsString Then
            s = s & " or " & dc.Name & " Like " & txt
        End If
    Next
    If _usergroup.Contains("办公室") Or _usergroup.Contains("干部") Then
        bb=""
    Else
        If _userroles.Contains("管理") Then
            bb="所属室组='" & _usergroup & "'"
        Else
            bb="工作单位='" & _usergroup & "'"
        End If
    End If
    Tables(e.Form.Name & "_table1").Filter = s
End If

 

 

在模糊输入框中 输入上述图片中没有的名字或者删除输入字符后,系统会显示当前所有的四行数据,

 
此主题相关图片如下:22.png
按此在新窗口浏览图片

怎么实现数据只能在第一张图的两行数据里筛选  而不是从库表中的所有行进行筛选呢?


[此贴子已经被作者于2022/3/15 1:06:16编辑过]

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


加好友 发短信
等级:超级版主 帖子:109503 积分:557183 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/15 8:29:00 [只看该作者]

 窗口加载时的条件,合并到模糊检索框代码里

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝) 窗口加载时的条件,合并到模糊...  发帖心情 Post By:2022/3/15 8:45:00 [只看该作者]

模糊检索框代码如下:【我试着合并条件,但是没有成功,麻烦老师指导下】

Dim txt As String = e.Form.Controls("TextBox12").Text
Dim bb As  String
If txt = "" Then
    Tables(e.Form.Name & "_table1").Filter = ""
Else
    txt = "'%" & txt & "%'"
    'MessageBox.Show("0")
    Dim s As String = "1=2"
    For Each dc As Col In Tables(e.Form.Name & "_table1").Cols
        'MessageBox.Show(dc.Name)
        If dc.IsString Then
            s = s & " or " & dc.Name & " Like " & txt
        End If
    Next
    If _usergroup.Contains("办公室") Or _usergroup.Contains("干部") Then
        bb=""
    Else
        If _userroles.Contains("管理") Then
            bb="所属室组='" & _usergroup & "'"
        Else
            bb="工作单位='" & _usergroup & "'"
        End If
    End If
    Tables(e.Form.Name & "_table1").Filter = s
End If


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


加好友 发短信
等级:超级版主 帖子:109503 积分:557183 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/15 8:53:00 [只看该作者]

Tables(e.Form.Name & "_table1").Filter = s & " and " & bb

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)Tables(e.Form.Name & "_table1"...  发帖心情 Post By:2022/3/15 9:16:00 [只看该作者]

试过  提示如下:


图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看
还是会加载所有的数据,而不是从那两条数据里面筛选出来……

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


加好友 发短信
等级:超级版主 帖子:109503 积分:557183 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/15 9:19:00 [只看该作者]

Tables(e.Form.Name & "_table1").Filter = “(” s & ") and " & bb


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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)Tables(e.Form.Name & "_table1"...  发帖心情 Post By:2022/3/15 9:45:00 [只看该作者]

参照老师的提示  现代码如下:【红色部分代码怎么进行提示呢  当前用户属性加载的数据,如果输入的值在总数据库表里面存在,但是不属于当前用户属性的就提示他联系某某室组  反之就提示不存在】

Dim txt As String = e.Form.Controls("TextBox12").Text
Dim bb As  String

If _usergroup.Contains("办公室") Or _usergroup.Contains("干部") Then
    bb=""
Else
    If _userroles.Contains("管理") Then
        bb="所属室组='" & _usergroup & "'"
    Else
        bb="工作单位='" & _usergroup & "'"
    End If
End If

If txt = "" Then
    Tables(e.Form.Name & "_table1").Filter = bb
Else
    txt = "'%" & txt & "%'"
    Dim s As String = "1=2"
    For Each dc As Col In Tables(e.Form.Name & "_table1").Cols
        If dc.IsString Then
            s = s & " or " & dc.Name & " Like " & txt
        End If
    Next
    Tables(e.Form.Name & "_table1").Filter = "(" & s & ") and " & bb
   
   
    Dim br As  DataRow =DataTables(e.Form.Name & "_table1").Select("")
    If  br IsNot  Nothing  Then
        MessageBox.Show("该数据不在你所查询的权限内,请联系" & br("所属室组") & "!","温馨提示")
    End If
End If


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


加好友 发短信
等级:超级版主 帖子:109503 积分:557183 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/15 9:47:00 [只看该作者]

Dim br As  DataRow =DataTables(e.Form.Name & "_table1").find("xxx条件")

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)Dim br As  DataRow =DataTable...  发帖心情 Post By:2022/3/15 10:35:00 [只看该作者]

当前代码如下:【运行过程中会根据输入的字符数量,对应提示字符数量的信息次数,有没有办法只实现弹出一次提醒呢?】

代码放在了控件textchanged事件里面  怎么实现在实现模糊检索的情况下 又能够精准弹出提示

 

Dim txt As String = e.Form.Controls("TextBox12").Text
Dim bb As  String

If _usergroup.Contains("办公室") Or _usergroup.Contains("干部") Then
    bb=""
Else
    If _userroles.Contains("管理") Then
        bb="所属室组='" & _usergroup & "'"
    Else
        bb="工作单位='" & _usergroup & "'"
    End If
End If

If txt = "" Then
    Tables(e.Form.Name & "_table1").Filter = bb
Else
    txt = "'%" & txt & "%'"
    Dim s As String = "1=2"
    For Each dc As Col In Tables(e.Form.Name & "_table1").Cols
        If dc.IsString Then
            s = s & " or " & dc.Name & " Like " & txt
        End If
    Next
    Dim br As  DataRow =DataTables(e.Form.Name & "_table1").find(s)
    If  br IsNot  Nothing  Then
        Tables(e.Form.Name & "_table1").Filter = "(" & s & ") and " & bb
        Dim zs1 As Integer = Tables(e.Form.Name & "_Table1").Count
        If zs1 >0 Then
        Else
            MessageBox.Show("该数据不在你所查询的权限内,请联系" & br("所属室组") & "!","温馨提示")
        End If
    Else
        MessageBox.Show("该数据不存在,请核对数据是否输入正确!","温馨提示")
    End If
End If


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


加好友 发短信
等级:超级版主 帖子:109503 积分:557183 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/15 10:38:00 [只看该作者]

放到valuechanged事件

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