以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  转置  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=160757)

--  作者:yetle
--  发布时间:2021/2/20 13:51:00
--  转置
跟帮助的垂直表和水平表的转换有所不同,下图所示,怎么处理?

图片点击可在新窗口打开查看此主题相关图片如下:a29f91d1-eab8-447e-af09-4839a3c59c09.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2021/2/20 14:14:00
--  
逻辑基本一样

Dim dtb As New DataTableBuilder("B")
dtb.AddDef(
"类型"Gettype(String), 32)
For Each 
v As String In DataTables("A").GetValues("平台名称")
    
dtb.AddDef(v, Gettype(string))
Next

dtb.Build()

For Each 
c As datacol In DataTables("A").datacols
if c.name <> "平台名称"
    Dim dr1 As DataRow = DataTables("B").AddNew()
    dr1(
"类型") = dc.name
    
For Each dr2 As DataRow In DataTables("A").datarows
       dr1(dr2("平台名称")) = dr2(dc.name)
    
Next
end if
Next
MainTable = Tables(
"表B")

--  作者:yetle
--  发布时间:2021/2/20 14:30:00
--  
提示dc.name处dc未定义,改为c.name也没有数据呢
[此贴子已经被作者于2021/2/20 14:35:33编辑过]

--  作者:有点蓝
--  发布时间:2021/2/20 14:34:00
--  
c.name
--  作者:yetle
--  发布时间:2021/2/20 14:38:00
--  
改为c.name也没有数据呢
图片点击可在新窗口打开查看此主题相关图片如下:db588dab-0097-4cb1-be92-2b5d3e990df7.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2021/2/20 14:45:00
--  
请上传实例说明
--  作者:yetle
--  发布时间:2021/2/22 11:49:00
--  
调试好了,有数据了
For Each c As DataCol In DataTables("业绩分析").datacols
    If c.name <> "平台店铺名称"
        Dim dr1 As DataRow = DataTables("横向业绩分析").AddNew()
        dr1("类型") = c.name
        For Each dr2 As DataRow In DataTables("业绩分析").datarows
            dr1(dr2("平台店铺名称")) = dr2(c.name)
        Next
    End If
Next
Dim ta As Table = Forms("业绩分析").Controls("Table1").Table
ta.datasource = DataTables("横向业绩分析")
我想生成的横向数据是按月销售金额依次排列,要怎么修改。

图片点击可在新窗口打开查看此主题相关图片如下:31438d4f-6ae2-4183-be74-070a77a351d0.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2021/2/22 11:50:42编辑过]

--  作者:有点蓝
--  发布时间:2021/2/22 12:03:00
--  
For Each dr2 As DataRow In DataTables("业绩分析").datarows

改为

For Each dr2 As DataRow In DataTables("业绩分析").select("","月销售金额")

--  作者:yetle
--  发布时间:2021/2/22 13:15:00
--  
顺序没有发生改变
--  作者:有点蓝
--  发布时间:2021/2/22 13:38:00
--  
嗯,列顺序是固定的。生成列名的时候就要排序了

Dim dtb As New DataTableBuilder("B")
dtb.AddDef(
"类型"Gettype(String), 32)
For Each 
v As String In DataTables("A").GetValues("平台名称","","月销售金额")
    dtb.AddDef(v, Gettype(string))
Next

dtb.Build()