以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]狐爸求助。交叉表转换。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=25845)

--  作者:hanxuntx
--  发布时间:2012/11/18 16:30:00
--  [求助]狐爸求助。交叉表转换。


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

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

 

请问:

1.如何把表A转换成表B,帮助上的例子我看了,能力有限,多个垂直列的就不会了。

2.如何把表B修改过的数据存到表A里面呢?

期待解答

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.foxdb


--  作者:唐尸三摆手
--  发布时间:2012/11/18 17:05:00
--  

\'\'\'///都四尾啦,还这么谦虚

Dim dtb As New DataTableBuilder("成绩表")
dtb.AddDef("姓名", Gettype(String), 32)
Dim prds As List(of String()) = DataTables("表A").GetUniqueValues("","分类","阶段","课程")
For Each prd As String() In prds
    dtb.AddDef(prd(0) & "_" & prd(1) & "_" & prd(2), Gettype(Integer))
Next
dtb.Build()
For Each xm As String In DataTables("表A").GetUniqueValues("","姓名")
    Dim dr As DataRow = DataTables("成绩表").AddNew()
    dr("姓名") = xm
    For Each prd As String() In prds
        dr(prd(0) & "_" & prd(1) & "_" & prd(2)) = DataTables("表A").Compute("Sum(分数)","姓名 = \'" & xm & "\' And 分类 = \'" & prd(0) & "\' And 阶段 = \'" & prd(1) & "\' And 课程 = \'" & prd(2) & "\'")
   Next
Next
MainTable= Tables("成绩表")

////看看是不是你要的效果


--  作者:hanxuntx
--  发布时间:2012/11/18 17:22:00
--  

非常感谢。

唐兄。这么写是没问题。我想要一个通用一点的。

类似狐表的交叉表生成器那样的代码。

[此贴子已经被作者于2012-11-18 17:23:53编辑过]

--  作者:布莱克朱
--  发布时间:2012/11/18 18:19:00
--  
代码出错 ,无效的集合函数
[此贴子已经被作者于2012-11-18 18:18:46编辑过]

--  作者:唐尸三摆手
--  发布时间:2012/11/18 18:43:00
--  
////代码错是因为项目的分数列类型有问题,字符型的列是不能统计总和的
--  作者:hanxuntx
--  发布时间:2012/11/18 20:23:00
--  

这个表并不是要统计数据,统计的话直接用交叉表统计就行了

 

有两个目的,

1.是数据表转换为交叉表

2.在交叉表中方便的编辑数据,然后还能保存的数据表中

          


--  作者:czy
--  发布时间:2012/11/18 20:26:00
--  

表A到表B直接交叉统计就可以了吧。

将表A分数列改成数值型,代码。

 

Dim g As New CrossTableBuilder("统计表1", DataTables("表A"))
g.HGroups.AddDef("姓名")
g.VGroups.AddDef("分类")
g.VGroups.AddDef("阶段")
g.VGroups.AddDef("课程")
g.Totals.AddDef("分数", "分数")
g.Build()
MainTable = Tables("统计表1")

 

可能我理会错了,楼主要的不是交叉统计。

[此贴子已经被作者于2012-11-18 20:30:42编辑过]

--  作者:hanxuntx
--  发布时间:2012/11/18 21:00:00
--  

嗯 谢谢c版 确实要的不是统计

而是表的形式转换


--  作者:布莱克朱
--  发布时间:2012/11/18 21:09:00
--  
目地是 做到交叉表的形式 但是在交叉表里面输入数据后 保存到原来的表中.



因为临时表是不能保存的 现在需要保存.

--  作者:czy
--  发布时间:2012/11/18 21:15:00
--  
以下是引用hanxuntx在2012-11-18 21:00:00的发言:

嗯 谢谢c版 确实要的不是统计

而是表的形式转换

 

如果这样的话,表B就不需要临时生成,因为生成临时表还不如直接用交叉统计。

仅数据转换不是难事。