以文本方式查看主题

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

--  作者:nblwar
--  发布时间:2012/9/7 19:57:00
--  [求助]交叉统计

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


--  作者:lin_hailun
--  发布时间:2012/9/7 20:23:00
--  
估计没有直接的方法。间接方法,就是生产统计表以后,动态调整列位置。
--  作者:nblwar
--  发布时间:2012/9/7 20:29:00
--  

发错了

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

--  作者:lin_hailun
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间: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
--  发布时间:2012/9/7 21:17:00
--  

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

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


--  作者:nblwar
--  发布时间:2012/9/8 18:46:00
--  
以下是引用czy在2012-9-7 21:17:00的发言:

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

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

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


--  作者:狐狸爸爸
--  发布时间:2012/9/9 10:24:00
--  

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

 

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

 


--  作者:nblwar
--  发布时间: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
--  发布时间:2012/9/9 13:45:00
--  
狐表代码计算出来的空结果总是带零,烦死了,强烈建议默认把零去掉
[此贴子已经被作者于2012-9-9 13:45:28编辑过]