Foxtable(狐表)用户栏目专家坐堂 → [求助]狐爸求助。交叉表转换。


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

主题:[求助]狐爸求助。交叉表转换。

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


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
[求助]狐爸求助。交叉表转换。  发帖心情 Post By:2012/11/18 16:30:00 [只看该作者]


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

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

 

请问:

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

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

期待解答

 

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


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


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2012/11/18 17:22:00 [只看该作者]

非常感谢。

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

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

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

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


加好友 发短信
等级:三尾狐 帖子:623 积分:3897 威望:0 精华:0 注册:2011/8/3 22:13:00
  发帖心情 Post By:2012/11/18 18:19:00 [只看该作者]

代码出错 ,无效的集合函数
[此贴子已经被作者于2012-11-18 18:18:46编辑过]

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


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2012/11/18 18:43:00 [只看该作者]

////代码错是因为项目的分数列类型有问题,字符型的列是不能统计总和的

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


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2012/11/18 20:23:00 [只看该作者]

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

 

有两个目的,

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

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

          


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2012/11/18 21:00:00 [只看该作者]

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

而是表的形式转换


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


加好友 发短信
等级:三尾狐 帖子:623 积分:3897 威望:0 精华:0 注册:2011/8/3 22:13:00
  发帖心情 Post By:2012/11/18 21:09:00 [只看该作者]

目地是 做到交叉表的形式 但是在交叉表里面输入数据后 保存到原来的表中.



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

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/11/18 21:15:00 [只看该作者]

以下是引用hanxuntx在2012-11-18 21:00:00的发言:

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

而是表的形式转换

 

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

仅数据转换不是难事。


 回到顶部
总数 24 1 2 3 下一页