以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 水平表与垂直表的转换 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=94773) |
-- 作者:lk15502 -- 发布时间:2017/1/1 19:07:00 -- 水平表与垂直表的转换 老师,下面的代码,怎么从水平表转换为垂直表? \'\'\' Dim dt1 As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1") Dim dt As DataTable Dim dtb As New DataTableBuilder("织造产量统计") dtb.AddDef("姓名", Gettype(String), 16) 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("织造产量表").sqlSelect("[织造日期] = \'" & dt1.value & "\'") If dr1 IsNot Nothing AndAlso dr1.IsNull("织造人员") = False AndAlso 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 nm1() As String = nm.replace("-","\'-\'").split("-") nm1(0) = nm1(0).trim("\'") nm1(1) = nm1(1).trim("\'") Dim v As Double = val(nm1(1)) Dim dr2 As DataRow Dim key As String = nm1(0) & "|" & dr1("机台编号") \'这里是关键,由工号和产品组成字典的关键词. If lst.ContainsKey(key) \'如果集合中包括此姓名对应的行 dr2= lst(key) \'将此行赋值给变量dr2 Else dr2 = dt.AddNew() \'否则增加一行. dr2("姓名") = nm1(0) \'新增行的姓名列设置为此姓名 dr2("机台") = dr1("机台编号") lst.add(key,dr2) \'将新增行添加到字典中,以便接下来检索 End If dr2("重量") = dr2("重量") + v \'加上姓名"-"后的重量 Next End If Next Tables("织造产量表_Table2").DataSource = dt Tables("织造产量表_Table2").AutoSizeCols |
-- 作者:lk15502 -- 发布时间:2017/1/1 19:58:00 -- 还有老师,怎么汇总? |
-- 作者:狐狸爸爸 -- 发布时间:2017/1/2 20:02:00 -- 1、水平是分组统计,垂直是交叉统计,可以看看以下帮助,两种情况都有介绍: 2、实在搞不定,就上传例子,说明需要怎样的统计结果。 |
-- 作者:lk15502 -- 发布时间:2017/1/3 7:46:00 -- 老师,上面的代码是多值字段的统计,模仿帮助的,怎么转换成交叉统计? |
-- 作者:lk15502 -- 发布时间:2017/1/3 7:49:00 -- 多值字段的统计,最后怎么汇总? |
-- 作者:有点色 -- 发布时间:2017/1/3 9:46:00 -- 请上传实例测试。 |
-- 作者:lk15502 -- 发布时间:2017/1/3 12:37:00 -- 就是一楼的代码怎么汇总? |
-- 作者:有点色 -- 发布时间:2017/1/3 14:21:00 -- 参考
http://www.foxtable.com/webhelp/scr/2965.htm
不会做,请上传实例。 |