以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教对学历(文本)筛选的方法 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=78353) |
-- 作者:zhangchi96 -- 发布时间:2015/12/7 21:36:00 -- 请教对学历(文本)筛选的方法 1、在【数据字典】表中有许多列,其中三列: (数值)(文本)(文本) 序号 学历 出生年月 1 博士 198012 2 硕士 198011 3 本科 198010 4 大专 198009 5 中专 198008 6 高中 198007 7 初中 198006 8 198005 9 198004 10 198003 11 198002 12 198001
2、在【职工表】中也有对应的上述三列
3、在[职工表]中设置一个筛选,表示找出在198005后出生的记录 Dim Filter As String = "" Filter = " 出生年月 > ‘198005’ " Tables("职工表").Filter
= Filter 4、如果要找出学历高于大专的记录Filter = " 学历 > ‘大专’" 应如何修改?可不可以利用【数据字典】中的“序号”来实现 5、如果把“中专”和“高中”视为同等学历,Filter = " 学历 = ‘高中’" ,希望结果是学历为高中或者中专的,又该如何修改? |
-- 作者:大红袍 -- 发布时间:2015/12/7 21:44:00 -- 既然学历种类不多,就直接写
.Filter = "学历 in (\'大专\', \'本科\', \'硕士\', \'博士\')"
.Filter = "学历 in (\'中专\', \'高中\')" |
-- 作者:zhangchi96 -- 发布时间:2015/12/7 22:39:00 -- 也是,我想复杂了 |
-- 作者:zhangchi96 -- 发布时间:2015/12/7 22:42:00 -- 看到in的用法,我就想到一个遇到的问题: 1、我想把 If sx2.text = "所有列" orelse sx2.text = "实发合计" Then
改为 If sx2.text in ("所有列" ,"实发合计") Then ,提示出错了 2、 改的原因是,我在实际书写的时候,在一个IF后面,有好多个 orelse连接,觉得字符太长
[此贴子已经被作者于2015/12/7 22:42:22编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/12/7 23:29:00 -- 1、代码没有 in 这种语法的,你可以用select
Select case sx2.Text case "大专", "本科" msgbox("大专以上") case "高中"
End Select |
-- 作者:zhangchi96 -- 发布时间:2015/12/9 23:31:00 -- 根据2楼的说法 : 我有三个组合框 sx1 sx2 sx3 对应选项 学历 高于 研究生 职务 低于 本科 等于 专科 不高于 中专 不低于 师范 类同于 高中 初中 sx2 的选项 有 6种,sx3的选项有7种,排列组合就有42种,写起来有点麻烦 想法: 在【数据字典】中设置了下列 两列 学历等级 学历 7 研究生 6 本科 5 专科 3 中专 3 师范 2 高中 1 初中 代码有问题,但思路如下: Dim sx1 As WinForm.ComboBox =
e.Form.Controls("筛选1") Dim sx2 As WinForm.ComboBox =
e.Form.Controls("筛选2") Dim sx3 As WinForm.ComboBox =
e.Form.Controls("筛选3") Dim Filter As String =
"" Dim 筛选项目 As String = ""
if sx1.text = "最高学历"
Then 筛选项目 = "学历" Dim dr As DataRow dr =DataTables("数据字典").Find("[学历]=\'"
& sx3.text & "\'") Dim xldj As String = dr("学历等级") \'求得学历对应的等级 msgbox( xldj ) ‘如果sx3选专科,这里的值为5 If sx2.text = "高于" Then \'开始求出一个高于 xldj 的学历组合 \'Dim lt As new List(Of String) \'定义集合 Dim lt As List(of String) = DataTables("数据字典").GetUniqueValues("[学历等级] > xldj ","学历") ‘这里不知道该用组合还是用数组 Dim alt() As String = lt.ToArray Array.Sort(alt) Dim slt As String =
String.Join("|", alt) Dim drz As DataRow drz = DataTables("教职工信息表").Find("") Filter = " [最高学历_学历] in lt ") \'该句不知道如何叙述 ElseIf 。。。 。。。 else Filter = "" End If else Filter = "" End If else Filter = "" End If
Tables("教职工信息表").Filter = Filter 绿色部分 只是思路,有好多错误,可自己无法写出来了 ,恳请老师指导! |
-- 作者:Hyphen -- 发布时间:2015/12/10 8:28:00 -- If sx1.text = "最高学历" Then 筛选项目 = "学历" Dim dr As DataRow dr =DataTables("数据字典").Find("[学历]=\'" & sx3.text & "\'") If dr IsNot Nothing Then Dim xldj As String = dr("学历等级") \'求得学历对应的等级 msgbox( xldj ) \'如果sx3选专科,这里的值为5 If sx2.text = "高于" Then \'开始求出一个高于 xldj 的学历组合 \'Dim lt As new List(Of String) \'定义集合 Dim lt As List(of String) = DataTables("数据字典").GetValues("学历","[学历等级] > xldj ") \'这里不知道该用组合还是用数组 Dim alt() As String = lt.ToArray Dim slt As String = String.Join(",", alt) Filter = " [最高学历_学历] in (\'" & slt.Replace(",","\',\'") & "\')")) \'该句不知道如何叙述 ElseIf ... ... Else Filter = "" End If End If Else Filter = "" End If Else Filter = "" End If Tables("教职工信息表").Filter = Filter |
-- 作者:大红袍 -- 发布时间:2015/12/10 9:35:00 -- 加上等级列、同类等级列,然后各种情况都可以直接判断大小得到答案了啊
7 研究生 5
6 本科 4
5 专科 3
4 中专 2
3 师范 2
2 高中 2
1 初中 1
|
-- 作者:zhangchi96 -- 发布时间:2015/12/10 11:51:00 -- Filter = " [最高学历_学历] in (\'" & slt.Replace(",","\',\'") & "\')")) 里面的左括号和右括号不一样多 我改为: Filter = " [最高学历_学历] in (\'" & slt.Replace(",","\',\'") & "\') "
[此贴子已经被作者于2015/12/10 11:57:56编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/12/10 11:53:00 -- Filter = " [最高学历_学历] in (\'" & slt.Replace(",","\',\'") & "\')" |