以文本方式查看主题

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

--  作者:linswcfr
--  发布时间:2015/11/25 23:23:00
--  [求助]交叉统计问题

    Dim Cols0() As String = {1,2,3,4,5,6}
    For  i0 As Integer =  0 To Cols0.Length - 1
        If .DataCols.Contains("余额_" & Cols0(i0)) = False Then
            .DataCols.Add("余额_" & Cols0(i0),Gettype(Double))
            .DataCols.Add("余额_" & Cols0(i0) & "hp",Gettype(Double))
            If .DataCols("余额_" & Cols0(i0)).Caption Is Nothing Then

..
            End If
        End If
    Next

 

交叉统计表生成后,垂直方向必须要有6个分组,不足时添加至6个,现在问题是不足6个分组时,新增的分组(列),如何指定标题

 

假设正好6个分组时,标题分别是1 2 3 4 5 6

 

不满6个时,例如只有3列,标题是1-6随机(比如3 4 6),新增的3列标题必须分别是1 2 5,如何实现


--  作者:大红袍
--  发布时间:2015/11/25 23:41:00
--  

datacols不是可以指定标题的么?

 

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

 


--  作者:linswcfr
--  发布时间:2015/11/26 6:43:00
--  

因为是随机的,我不知道怎么指定了

这么说吧,以表A中的“区间”字段为垂直分组生成交叉表,区间列可能有A,B,C,D,E,F

 

当区间只有D,E,F,G,新增的列标题为A,B

当区间只有B,E,F,G,新增的列标题为A,C

当区间只有A,E,F,新增的列标题为B,C

当区间只有B,新增的列标题为A,C,D,E,F

....

 


--  作者:Hyphen
--  发布时间:2015/11/26 8:56:00
--  

楼主的代码不是已经实现了么,判断不存在,就新增


--  作者:linswcfr
--  发布时间:2015/11/26 9:04:00
--  

对新增的列,“标题的命名”..

 

 


--  作者:linswcfr
--  发布时间:2015/11/26 9:15:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:交叉表标题命名.foxdb

 

一、明细表1中区间中含有1,2,3,4,5,6,统计表就不存要新增列的问题 ;列名是余额_1,余额_2余,额_3,余额_4,余额_5,余额_6,对应的列标题分别是标题中已经有1,2,3,4,5,6了

二、明细表2中区间中没有1,2;统计表就要新增两列,并对这两列标题命名;

由于明细表2生成的统计表,,已存在的列名是余额_1,余额_2余,额_3,余额_4,对应的列标题分别是标题中已经有3,4,5,6了;新增的列名,只会是余额_5,余额_6,对应的列标题,只能是1,2,或2,1

 

 


 

[此贴子已经被作者于2015/11/26 9:16:28编辑过]

--  作者:大红袍
--  发布时间:2015/11/26 9:38:00
--  

如下代码

 

Dim Cs() As String =  {1,2,3,4,5,6}

Dim t As Table = Tables("统计表1")
Dim len As Integer = 1
For i As Integer =  0 To cs.length - 1
    If t.Cols(i+len).Caption <> cs(i) Then
        t.DataTable.DataCols.Add("动态_" & cs(i), Gettype(Double), "",cs(i))
        t.cols("动态_" & cs(i)).move(i+len)
    End If
Next


--  作者:linswcfr
--  发布时间:2015/11/26 9:45:00
--  

区间有最MAX 为6 的时候正常,没有的话,会超出数组,这个怎么解决了


--  作者:linswcfr
--  发布时间:2015/11/26 9:49:00
--  

---------------------------
版本:2015.11.2.1
---------------------------
代码执行出错,错误信息:

 

System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。

参数名: index

   在 System.Collections.ArrayList.get_Item(Int32 index)

   在 C1.Win.C1FlexGrid.ColumnCollection.get_Item(Int32 index)

   在 Foxtable.ColCollection.get_Item(Int32 Index)

   在 UserCode.Test()
---------------------------
确定  
---------------------------


--  作者:linswcfr
--  发布时间:2015/11/26 10:34:00
--