以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- 如何正确匹配数据进行精准筛选 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175668)
|
-- 作者:cnsjroom
-- 发布时间: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编辑过]
|
-- 作者:有点蓝
-- 发布时间:2022/3/15 8:29:00
--
窗口加载时的条件,合并到模糊检索框代码里
|
-- 作者:cnsjroom
-- 发布时间: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
|
-- 作者:有点蓝
-- 发布时间:2022/3/15 8:53:00
--
Tables(e.Form.Name & "_table1").Filter = s & " and " & bb
|
-- 作者:cnsjroom
-- 发布时间:2022/3/15 9:16:00
-- 回复:(有点蓝)Tables(e.Form.Name & "_table1"...
试过 提示如下: 此主题相关图片如下:11.png
还是会加载所有的数据,而不是从那两条数据里面筛选出来……
|
-- 作者:有点蓝
-- 发布时间:2022/3/15 9:19:00
--
Tables(e.Form.Name & "_table1").Filter = “(” s & ") and " & bb
|
|
-- 作者:cnsjroom
-- 发布时间:2022/3/15 9:45:00
-- 回复:(有点蓝)Tables(e.Form.Name & "_table1"...
参照老师的提示 现代码如下:【红色部分代码怎么进行提示呢 当前用户属性加载的数据,如果输入的值在总数据库表里面存在,但是不属于当前用户属性的就提示他联系某某室组 反之就提示不存在】
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
|
-- 作者:有点蓝
-- 发布时间:2022/3/15 9:47:00
--
Dim br As DataRow =DataTables(e.Form.Name & "_table1").find("xxx条件")
|
-- 作者:cnsjroom
-- 发布时间:2022/3/15 10:35:00
-- 回复:(有点蓝)Dim br As DataRow =DataTable...
当前代码如下:【运行过程中会根据输入的字符数量,对应提示字符数量的信息次数,有没有办法只实现弹出一次提醒呢?】
代码放在了控件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
|
-- 作者:有点蓝
-- 发布时间:2022/3/15 10:38:00
--
放到valuechanged事件
|