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


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

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

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


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

用交叉表的问题是,如果分数列是字符串的话 就没办法了

 

 


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


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

帮助里面有一个例子 是单层的表头

http://www.foxtable.com/help/topics/0679.htm 请参考


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


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

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

用交叉表的问题是,如果分数列是字符串的话 就没办法了

 

 

 

数据表的列类型是你设置的,分数为什么要字符呢?


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


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

有办法,即使分数是字符型也没有问题。

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


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

先执行窗口的统计按钮,再到统计操作看看。

 

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


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


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2012/11/18 23:27: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
    If DataTables("表A").DataCols("分数").IsNumeric
        dtb.AddDef(prd(0) & "_" & prd(1) & "_" & prd(2), Gettype(Integer))
    Else
        dtb.AddDef(prd(0) & "_" & prd(1) & "_" & prd(2), Gettype(String), 32)
    End If
Next
dtb.Build()

For Each Name As String In DataTables("表A").GetComboListString("姓名").Split("|")
    Dim r As Row = Tables("成绩表").AddNew
    r("姓名") = name
    Dim Arys As List(Of String()) = DataTables("表A").GetUniqueValues("姓名 = '" & name & "'","分类","阶段","课程","分数")
    For Each Ary As String() In Arys
        r(Ary(0) & "_" & Ary(1) & "_" & Ary(2)) = Ary(3)
    Next
Next
MainTable= Tables("成绩表")

 

 

上面的代码DataTables("表A").GetUniqueValues("","分类","阶段","课程")

红色部分没办法动态生成,只能硬编码吗?


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


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/11/19 8:58:00 [只看该作者]

7号还是没有掌握一些基本的编码常识。
 
你可以:
 
Dim a As String = “分类”
Dim b As String = “阶段”
Dim c As String = “课程”
DataTables("表A").GetUniqueValues("",a,b,c)

 

代码中任何字符型的部分,都可以动态合成。


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


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

谢谢老大 如果是有四个的话,哪不是要定义四个变量吗?

这样还不是硬编码了吗?


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/19 9:48:00 [只看该作者]

以下是引用hanxuntx在2012-11-19 9:37:00的发言:

谢谢老大 如果是有四个的话,哪不是要定义四个变量吗?

这样还不是硬编码了吗?


多种方法解决。

方法一:自己实现GetUniqueValues方法,就可以不受束缚;

方法二:用动态编译的方法。合成一个字符串,然后动态编译一下执行。
[此贴子已经被作者于2012-11-19 9:48:35编辑过]

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


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

小林介绍一下第二种方法


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