Foxtable(狐表)用户栏目专家坐堂 → [求助]交叉统计


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

主题:[求助]交叉统计

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
[求助]交叉统计  发帖心情 Post By:2012/9/7 19:57:00 [只看该作者]

交叉统计生成的垂直分组列怎么让他降序排序啊??


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


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

估计没有直接的方法。间接方法,就是生产统计表以后,动态调整列位置。

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/9/7 20:29:00 [只看该作者]

发错了

[此贴子已经被作者于2012-9-7 20:35:48编辑过]

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


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

以下是引用nblwar在2012-9-7 20:29:00的发言:

例子非常简单,就是两个结构一样的表,一个表输入熔铸编号,就会自动引用另一个表该熔铸编号的相关记录,两个表的代码也只有这个代码,在我自己电脑上没什么问题,可是在公司古董上面运行就超慢


帖子发错地方了吧....

列名排序小例:

Dim t As Table = Tables("统计表1")
For i As Integer = 0 To t.Cols.Count - 1
    Dim k As Integer = i
    For j As Integer = i + 1 To t.Cols.Count - 1
        If t.Cols(i).Name < t.Cols(j).Name Then
            k = j
        End If
    Next   
    t.Cols(k).Move(i)
Next

[此贴子已经被作者于2012-9-7 20:39:09编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/9/7 20:50:00 [只看该作者]

呵呵,我也来个列明排序的:

 

Dim t As Table = Tables("表A")
Dim nms As new List(of String)
For Each c As col  In t.cols
    nms.add(c.name)
Next
nms.sort()
For i As Integer = 0 To nms.count -1
    t.cols(nms(i)).move(i)
Next


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


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

个人觉得这种排序还是不要去排,否则越排越乱。

交叉统计生成后的表,如果真要排序应该考虑分组列、合计列,如果有多个统计列还得考虑,否则结果是分组列和合计列不知跑到什么地方去,统计列会挤堆出现。


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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/9/8 18:46:00 [只看该作者]

以下是引用czy在2012-9-7 21:17:00的发言:

个人觉得这种排序还是不要去排,否则越排越乱。

交叉统计生成后的表,如果真要排序应该考虑分组列、合计列,如果有多个统计列还得考虑,否则结果是分组列和合计列不知跑到什么地方去,统计列会挤堆出现。

EXCEL里面的数据透视表也可以做交叉统计,它有个办法就是把垂直分组的那一列降序排序,不知道狐表是怎么弄的


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/9/9 10:24:00 [只看该作者]

自己编码,这样就可以排序:

 

http://www.foxtable.com/help/topics/2394.htm

 


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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/9/9 13:34:00 [只看该作者]

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("客户", Gettype(String), 16)
dtb.AddDef("合金", Gettype(String), 16)
dtb.AddDef("坯料规格", Gettype(String), 30)
dtb.AddDef("生产批号", Gettype(String), 30)
dtb.AddDef("总数", Gettype(Integer))
dtb.AddDef("当前规格_7", Gettype(Integer),"","7.0")
dtb.AddDef("当前规格_4", Gettype(Integer),"","4.0")
dtb.AddDef("当前规格_18", Gettype(Integer),"","1.8")
dtb.AddDef("当前规格_18Q", Gettype(Integer),"","1.8已切")
dtb.AddDef("当前规格_1", Gettype(Integer),"","1.0")
dtb.AddDef("当前规格_05", Gettype(Integer),"","0.5")
dtb.AddDef("当前规格_03", Gettype(Integer),"","0.3")
dtb.Build()
For Each nm() As String In DataTables("坯料跟踪表").GetUniqueValues("","客户","合金","坯料规格","生产批号")
    Dim dr As DataRow = DataTables("统计").AddNew()
    dr("客户") = nm(0)
    dr("合金") = nm(1)
    dr("坯料规格") = nm(2)
    dr("生产批号") = nm(3)
    dr("当前规格_7") = DataTables("坯料跟踪表").Compute("COUNT(熔铸编号)","[客户] = '" & nm(0) & "' And [合金] = '" & nm(1) & "' And [坯料规格] = '" & nm(2) & "' And [生产批号] = '" & nm(3) & "' And [当前规格] = '7.0'")
    dr("当前规格_4") = DataTables("坯料跟踪表").Compute("COUNT(熔铸编号)","[客户] = '" & nm(0) & "' And [合金] = '" & nm(1) & "' And [坯料规格] = '" & nm(2) & "' And [生产批号] = '" & nm(3) & "' And [当前规格] = '4.0'")
    dr("当前规格_18") = DataTables("坯料跟踪表").Compute("COUNT(熔铸编号)","[客户] = '" & nm(0) & "' And [合金] = '" & nm(1) & "' And [坯料规格] = '" & nm(2) & "' And [生产批号] = '" & nm(3) & "' And [当前规格] = '1.8'")
    dr("当前规格_18Q") = DataTables("坯料跟踪表").Compute("COUNT(熔铸编号)","[客户] = '" & nm(0) & "' And [合金] = '" & nm(1) & "' And [坯料规格] = '" & nm(2) & "' And [生产批号] = '" & nm(3) & "' And [当前规格] = '1.8Q'")
    dr("当前规格_1") = DataTables("坯料跟踪表").Compute("COUNT(熔铸编号)","[客户] = '" & nm(0) & "' And [合金] = '" & nm(1) & "' And [坯料规格] = '" & nm(2) & "' And [生产批号] = '" & nm(3) & "' And [当前规格] = '1.0'")
    dr("当前规格_05") = DataTables("坯料跟踪表").Compute("COUNT(熔铸编号)","[客户] = '" & nm(0) & "' And [合金] = '" & nm(1) & "' And [坯料规格] = '" & nm(2) & "' And [生产批号] = '" & nm(3) & "' And [当前规格] = '0.5'")
    dr("当前规格_03") = DataTables("坯料跟踪表").Compute("COUNT(熔铸编号)","[客户] = '" & nm(0) & "' And [合金] = '" & nm(1) & "' And [坯料规格] = '" & nm(2) & "' And [生产批号] = '" & nm(3) & "' And [当前规格] = '0.3'")
    dr("总数") = DataTables("坯料跟踪表").Compute("COUNT(熔铸编号)","[客户] = '" & nm(0) & "' And [合金] = '" & nm(1) & "' And [坯料规格] = '" & nm(2) & "' And [生产批号] = '" & nm(3) & "'")
Next
MainTable= Tables("统计")

 

 

做出来好多零怎么去掉??


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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/9/9 13:45:00 [只看该作者]

狐表代码计算出来的空结果总是带零,烦死了,强烈建议默认把零去掉
[此贴子已经被作者于2012-9-9 13:45:28编辑过]

 回到顶部
总数 11 1 2 下一页