以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  多值字段的统计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=14253)

--  作者:小猪鑫鑫
--  发布时间:2011/11/13 16:12:00
--  多值字段的统计
狐爸:请问怎样统计多值字段中我勾选了几个项目,比如我有一个产量表,表中有日期、品种、产量、员工工号等列,员工工号列是多值字段,可以将参与生产当天该产品的员工工号勾选,有时是3人,有时是2人或1人,问题是我怎样自动统计出我勾选了几个人,以及怎样将勾选的人直观的统计出来,就是像表一样将员工的工号统计出来,谢谢
--  作者:czy
--  发布时间:2011/11/13 16:22:00
--  
传个示例看看。
--  作者:小猪鑫鑫
--  发布时间:2011/11/13 21:40:00
--  
请问版主:为什么我总是上传不了附件的?
--  作者:小猪鑫鑫
--  发布时间:2011/11/13 21:41:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多字段产量统计.table


--  作者:小猪鑫鑫
--  发布时间:2011/11/13 21:44:00
--  
可以上传文件了,实例在上楼,请版主帮看看,意思就是想统计出每一个工号员工的每月每个品种的产量,当天产量有几个人参与就几个人平分,这在生产企业里经常要用到,谢谢
--  作者:狐狸爸爸
--  发布时间:2011/11/13 22:09:00
--  

看起来复杂,其实:

 

 

Dim dt As DataTable
Dim dtb As New DataTableBuilder("统计")
Dim lst As New Dictionary(of String ,DataRow)
dtb.AddDef("工号", Gettype(String), 16)
dtb.AddDef("数量", Gettype(Double))
dt = dtb.Build
For Each dr1 As DataRow In DataTables("产量登记表_多值字段").DataRows
    If dr1.IsNull("员工工号") = False Then
        Dim nms() As String = dr1("员工工号").Split(",")
        Dim v As Double = dr1("数量")/ nms.Length
        For Each nm As String In nms
            Dim dr2 As DataRow
            If lst.ContainsKey(nm)
                dr2= lst(nm)
            Else
                dr2 = dt.AddNew()
                dr2("工号") = nm
                lst.add(nm,dr2)
            End If
            dr2("数量") = dr2("数量") + v
        Next
    End If
Next

 

 

[此贴子已经被作者于2011-11-14 7:17:16编辑过]

--  作者:clchg
--  发布时间:2011/11/15 9:31:00
--  
狐狸爸爸能不能把你的每一个语句进行说明
--  作者:狐狸爸爸
--  发布时间:2011/11/15 9:50:00
--  

下次重新整理一下,写入帮助。


--  作者:lanse_1971
--  发布时间:2012/1/1 20:48:00
--  

我也碰到同样的问题,怎么没有人回答呢?


--  作者:狐狸爸爸
--  发布时间:2012/1/4 10:46:00
--  
以下是引用lanse_1971在2012-1-1 20:48:00的发言:

我也碰到同样的问题,怎么没有人回答呢?

http://www.foxtable.com/help/topics/2400.htm