以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 垂直表和水平表转换 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=84836)
|
-- 作者:jamhuton
-- 发布时间:2016/5/11 16:17:00
-- 垂直表和水平表转换
2个表的列和行互相调换
|
-- 作者:jamhuton
-- 发布时间:2016/5/11 16:17:00
--
此主题相关图片如下:1.png
|
-- 作者:jamhuton
-- 发布时间:2016/5/11 16:18:00
--
此主题相关图片如下:2.png
|
-- 作者:jamhuton
-- 发布时间:2016/5/11 16:23:00
--
上面的表转换成下面的表,例子我看了半天没搞明白,这个和例子有些不同
|
-- 作者:大红袍
-- 发布时间: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
-- 发布时间:2016/5/12 10:25:00
--
此主题相关图片如下:3.png
3个问题: 1、这个月份这个一行怎么删除 2、转换后数据没出现 3、这个转换后是一个临时表,如果我要数据表,应该如何改代码?
|
-- 作者:大红袍
-- 发布时间: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、你把临时表导出,然后导入即可。
|
-- 作者:大红袍
-- 发布时间: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
-- 发布时间:2016/5/12 10:48:00
--
谢谢老师
|
-- 作者:jamhuton
-- 发布时间:2016/5/12 11:26:00
--
老师我想在后面加一个合计列,因为这里的数据列不断在增加的,这个合计咱就弄不来了
|