以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 多值字段只统计显示行 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=50491) |
-- 作者:JPG7 -- 发布时间:2014/5/7 16:24:00 -- 多值字段只统计显示行 求助怎么在这个多值字段统计只统计显示的行? Dim
dt
As
DataTable |
-- 作者:有点甜 -- 发布时间:2014/5/7 17:26:00 -- 猜一下,这个意思? Dim dt As DataTable Dim dtb As New DataTableBuilder("统计") dtb.AddDef("工号", Gettype(String), 16) dtb.AddDef("数量", Gettype(Double)) dt = dtb.Build() \'开始逐行累加统计 Dim lst As New Dictionary(of String ,DataRow) \'定义一个字典,用于检索每个员工在统计表中对应的行 For Each dr1 As DataRow In DataTables("产量登记").Select(Tables("产量登记").Filter) 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) \'将此行赋值给变量dr2 Else dr2 = dt.AddNew() \'否则增加一行. dr2("工号") = nm \'新增行的工号列设置为此工号 lst.add(nm,dr2) \'将新增行添加到字典中,以便接下来检索 End If dr2("数量") = dr2("数量") + v \'加上平均后的产量 Next End If Next |
-- 作者:JPG7 -- 发布时间:2014/5/7 19:57:00 -- 回复:(有点甜)猜一下,这个意思? Dim dt A... 谢谢,不太懂,不过可以套用
|