以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- 多值字段统计问题 (http://foxtable.com/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 IfNext
|
-- 作者: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
--
问题及时解决,对我帮助很大,由衷感谢帮助过我的老师们
|