Foxtable(狐表)用户栏目专家坐堂 → 水平表与垂直表的转换


  共有1983人关注过本帖树形打印复制链接

主题:水平表与垂直表的转换

帅哥哟,离线,有人找我吗?
lk15502
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:706 积分:4908 威望:0 精华:0 注册:2016/5/17 12:03:00
水平表与垂直表的转换  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:706 积分:4908 威望:0 精华:0 注册:2016/5/17 12:03:00
  发帖心情 Post By:2017/1/1 19:58:00 [只看该作者]

还有老师,怎么汇总?

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2017/1/2 20:02:00 [只看该作者]

1、水平是分组统计,垂直是交叉统计,可以看看以下帮助,两种情况都有介绍:
2、实在搞不定,就上传例子,说明需要怎样的统计结果。


 回到顶部
帅哥哟,离线,有人找我吗?
lk15502
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:706 积分:4908 威望:0 精华:0 注册:2016/5/17 12:03:00
  发帖心情 Post By:2017/1/3 7:46:00 [只看该作者]

老师,上面的代码是多值字段的统计,模仿帮助的,怎么转换成交叉统计?

 回到顶部
帅哥哟,离线,有人找我吗?
lk15502
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:706 积分:4908 威望:0 精华:0 注册:2016/5/17 12:03:00
  发帖心情 Post By:2017/1/3 7:49:00 [只看该作者]

多值字段的统计,最后怎么汇总?

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/3 9:46:00 [只看该作者]

 请上传实例测试。

 回到顶部
帅哥哟,离线,有人找我吗?
lk15502
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:706 积分:4908 威望:0 精华:0 注册:2016/5/17 12:03:00
  发帖心情 Post By:2017/1/3 12:37:00 [只看该作者]

就是一楼的代码怎么汇总?

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/3 14:21:00 [只看该作者]

参考

 

http://www.foxtable.com/webhelp/scr/2965.htm

 

不会做,请上传实例。


 回到顶部