以文本方式查看主题

-  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

 

不会做,请上传实例。