以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  多值字段统计问题  (http://www.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、在职称学历统计表中,如在“职称执业资格”列中一行任意输入“工程师”后续列中统计出结果,下一行再输入“助理工程师”又显示后续列结果

因为我单位人员多,每次统计这些数据都很麻烦,变动较多。谢谢各位老师了!!

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:统计测试20121022.rar


--  作者: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 & " \'