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


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

主题:垂直表和水平表转换

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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
垂直表和水平表转换  发帖心情 Post By:2016/5/11 16:17:00 [只看该作者]

2个表的列和行互相调换

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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2016/5/11 16:17:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2016/5/11 16:18:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2016/5/11 16:23:00 [只看该作者]

上面的表转换成下面的表,
例子我看了半天没搞明白,这个和例子有些不同


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/11 17:01:00 [只看该作者]

Dim dtb As New DataTableBuilder("表E")
dtb.AddDef("项目", Gettype(String), 32)
For Each v As String In DataTables("表C").GetValues("第一列", "", "_Sortkey")
    dtb.AddDef(v, Gettype(String))
Next
dtb.Build()
For Each dc As DataCol In DataTables("表C").datacols
    Dim dr1 As DataRow = DataTables("表E").AddNew()
    dr1("项目") = dc.name
Next
MainTable = Tables("表E")

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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2016/5/12 10:25:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

3个问题:
1、这个月份这个一行怎么删除
2、转换后数据没出现
3、这个转换后是一个临时表,如果我要数据表,应该如何改代码?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/12 10:36:00 [只看该作者]

1、2

 

Dim dtb As New DataTableBuilder("表E")
dtb.AddDef("项目", Gettype(String), 32)
For Each v As String In DataTables("表C").GetValues("第一列", "", "_Sortkey")
    dtb.AddDef(v, Gettype(String))
Next
dtb.Build()

For Each dc As DataCol In DataTables("表C").datacols
    If dc.name <> "第一列" Then
        Dim dr1 As DataRow = DataTables("表E").AddNew()
        dr1("项目") = dc.name
        For Each dr As DataRow In DataTables("表C").datarows
            dr1(dr("第一列")) = dr(dc.name)
        Next
    End If
Next

MainTable = Tables("表E")

 

3、你把临时表导出,然后导入即可。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/12 10:47:00 [只看该作者]

3、

 

Dim Builder As New ADOXBuilder
Builder.Open()

If DataTables.Contains("表E") Then
    If DataTables("表E").Type <> 5 Then
        With Builder
            .DeleteTable("表E")
        End With
    End If
    DataTables.unload("表E")
End If

Dim tbl = Builder.NewTable("表E") '创建表
tbl.AddColumn("项目" ,ADOXType.String, 32)
For Each v As String In DataTables("表C").GetValues("第一列", "", "_Sortkey")
    tbl.AddColumn("a" & v,ADOXType.String)
Next
Builder.AddTable(tbl) '增加表
Builder.Close()

DataTables.load("表E")
For Each dc As DataCol In DataTables("表C").datacols
    If dc.name <> "第一列" Then
        Dim dr1 As DataRow = DataTables("表E").AddNew()
        dr1("项目") = dc.name
        For Each dr As DataRow In DataTables("表C").datarows
            dr1("a" & dr("第一列")) = dr(dc.name)
        Next
    End If
Next

MainTable = Tables("表E")


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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2016/5/12 10:48:00 [只看该作者]

谢谢老师

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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2016/5/12 11:26:00 [只看该作者]

老师我想在后面加一个合计列,因为这里的数据列不断在增加的,这个合计咱就弄不来了

 回到顶部
总数 19 1 2 下一页