以文本方式查看主题

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

--  作者:wh420
--  发布时间:2014/5/16 14:33:00
--  多值字段统计问题

表中如果没有“数量”字段,直接按员工工号在每一行出现的次数统计应该怎么改?

员工工号:

002,004,009

002,009,038

 

统计002为2次,009为2次。

 

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


--  作者:Bin
--  发布时间:2014/5/16 14:42:00
--  

统计工号次数直接用下面的代码即可.
DataTables("产量登记表_多值字段").Compute("Count(员工工号)","员工工号 like \'%002%\'")

--  作者:wh420
--  发布时间:2014/5/16 22:03:00
--  
BIN老师,我想在上面的代码基础上实现功能。因为我想把统计的数据放在临时表中以供目录树调用。说白了就是想让我的目录树根据员工工号的值生成,在筛选显示统计数据
--  作者:Bin
--  发布时间:2014/5/17 8:28:00
--  
Dim lst As New List(of String )
For Each dr1 As DataRow In DataTables("产量登记表_多值字段").DataRows
    If dr1.IsNull("员工工号") = False Then
        Dim nms() As String = dr1("员工工号").Split(",")
        For Each nm As String In nms
            If lst.ContainsKey(nm)=false then
             dim dr as datarow =DataTables("统计").addnew
                lst.add(nm)
             dr("工号")=nm
             dr("数量")= DataTables("产量登记表_多值字段").Compute("Count(员工工号)","员工工号 like \'%" & nm & "%\'")
            End If
        Next
    End If
Next

--  作者:wh420
--  发布时间:2014/5/19 11:08:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:bug.jpg
图片点击可在新窗口打开查看

If lst.ContainsKey(nm)=False Then
这行代码报错

--  作者:Bin
--  发布时间:2014/5/19 11:13:00
--  
If lst.Contains(nm)=False Then
--  作者:wh420
--  发布时间:2014/5/19 11:19:00
--  
问题及时解决,对我帮助很大,由衷感谢帮助过我的老师们