以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 多值字段统计问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=24734) |
||||
-- 作者:douglas738888 -- 发布时间:2012/10/22 11:33:00 -- 多值字段统计问题 我在设计职称和执业资格管理系统中,在员工档案表中设立了“职称及执业资格证书”列, 列属性设立了多值字段,比如“工程师/一级建造师/造价员/经济师......”有的员工会持有 二个或三个以上证件,后面我做了统计总表及窗口,如何实现多值字段的统计(如果是只选一个证书,统计表能正常统计,勾选多个,统计总表不能统计);
我看了帮助,帮助上的例子代码不知怎样能实现
[此贴子已经被作者于2012-10-22 11:34:47编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/10/22 12:08:00 -- 这个比较麻烦,你可以设计好表,输入几行测试数据,然后将文件发上来,说明你需要得到什么样的统计结果,我们帮你做一下算了。 另外可以先看看: http://www.foxtable.com/help/topics/2400.htm
|
||||
-- 作者:douglas738888 -- 发布时间:2012/10/22 14:02:00 -- 先谢谢了,我做了发上来 |
||||
-- 作者:douglas738888 -- 发布时间:2012/10/22 14:49:00 --
请狐爸帮忙,达到的功能如下: 1、通过提取员工档案相关列的内容进行统计 2、统计数据在职称学历统计表中实现 3、在职称学历统计表中,如在“职称执业资格”列中一行任意输入“工程师”后续列中统计出结果,下一行再输入“助理工程师”又显示后续列结果 因为我单位人员多,每次统计这些数据都很麻烦,变动较多。谢谢各位老师了!!
|
||||
-- 作者:lin_hailun -- 发布时间:2012/10/22 16:19:00 -- 这样弄,如下,虽然效率不高,但,是最简便的方法。 Select Case e.DataCol.Name Case "职称执业资格" Dim Filter As String = "(职称 Like \'*/" & e.NewValue & "/*\' or 职称 like \'" & e.NewValue & "/*\' or 职称 like \'*/" & e.NewValue & "\')" e.DataRow("总人数") = DataTables("员工档案").Compute("Count(_Identify)", Filter) e.DataRow("男") = DataTables("员工档案").Compute("Count(_Identify)", "性别 = \'男\' And " & Filter) e.DataRow("女") = DataTables("员工档案").Compute("Count(_Identify)", "性别 = \'女\' And " & Filter) e.DataRow("年龄_25岁以下") = DataTables("员工档案").Compute("Count(_Identify)", "年龄 <= 25 And " & Filter) e.DataRow("年龄_26岁至30岁") = DataTables("员工档案").Compute("Count(_Identify)", "年龄 >= 26 And 年龄 <= 30 And " & Filter) e.DataRow("年龄_31岁至35岁") = DataTables("员工档案").Compute("Count(_Identify)", "年龄 >= 31 And 年龄 <= 35 And " & Filter) e.DataRow("学历_博士") = DataTables("员工档案").Compute("Count(_Identify)", "最终学历 = \'博士\' And " & Filter) e.DataRow("学历_硕士") = DataTables("员工档案").Compute("Count(_Identify)", "最终学历 = \'硕士\' And " & Filter) e.DataRow("学历_本科") = DataTables("员工档案").Compute("Count(_Identify)", "最终学历 = \'本科\' And " & Filter) End Select [此贴子已经被作者于2012-10-22 16:23:51编辑过]
|
||||
-- 作者:douglas738888 -- 发布时间:2012/10/22 16:30:00 -- 谢谢,我再试试 |
||||
-- 作者:douglas738888 -- 发布时间:2012/10/22 16:33:00 -- 职称 Like \'*/" & e.NewValue & "/*\' or 职称 like \'" & e.NewValue & "/*\' or 职称 like \'*/" & e.NewValue & " 这一组代码不太明白,需要老师给解释下下 |
||||
-- 作者:lin_hailun -- 发布时间:2012/10/22 18:05:00 -- 以下是引用douglas738888在2012-10-22 16:33:00的发言:
职称 Like \'*/" & e.NewValue & "/*\' or 职称 like \'" & e.NewValue & "/*\' or 职称 like \'*/" & e.NewValue & " 这一组代码不太明白,需要老师给解释下下 你的 职称 列的形式是 x/y/z/xx/yy/zz/xxx 比如,你选中的是 xx ,那么,如果要从中区别出来,就必须这样筛选 xx 像 /xx/ 一样 或者 xx 像 /×x 一样 或者 xx 像 xx/ 一样 |
||||
-- 作者:douglas738888 -- 发布时间:2012/10/22 18:27:00 -- Dim Filter As String = "(职称 Like \'*/" & e.NewValue & "/*\' or 职称 like \'" & e.NewValue & "/*\' or 职称 like \'*/" & e.NewValue & "\'or 职称 like \'" & e.NewValue & " \' )" 谢谢老师,您写的代码却一个单独选一个证书的,我加上后可执行,我理解的对吗? |
||||
-- 作者:lin_hailun -- 发布时间:2012/10/23 9:23:00 -- 嗯嗯,对于单个证书的我没有考虑。 或者像你写的,或者 职称 = \'" & e.NewValue & " \' |