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


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

主题:[求助]交叉统计问题

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/26 11:07: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 i+len >= t.Cols.count Then
        t.DataTable.DataCols.Add("动态_" & cs(i), Gettype(Double), "",cs(i))
    Else
        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
    End If
Next


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


加好友 发短信
等级:二尾狐 帖子:594 积分:5365 威望:0 精华:0 注册:2011/9/30 8:42:00
  发帖心情 Post By:2015/11/26 11:19:00 [只看该作者]

Dim g As New CrossTableBuilder("统计表1", DataTables("明细表2"))
g.HGroups.AddDef("客户")
g.VGroups.AddDef("区间")
g.Totals.AddDef("余额", "余额")
g.HorizontalTotal = True
g.HorizontalProportion = True

g.Build()
MainTable = Tables("统计表1")
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 i+len >= t.Cols.count Then
        t.DataTable.DataCols.Add("动态_" & cs(i), Gettype(Double), "",cs(i))
    Else
        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
    End If
Next

 

开启占比后,新的问题,汗


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2015/11/26 11:38:00 [只看该作者]

比较啰嗦:

Dim g As New CrossTableBuilder("统计表1", DataTables("明细表2"))
g.HGroups.AddDef("客户")
g.VGroups.AddDef("区间")
g.Totals.AddDef("余额", "余额")
g.HorizontalTotal = True
g.HorizontalProportion = True
g.Build()
MainTable = Tables("统计表1")

Dim dt As DataTable = DataTables("统计表1")
Dim vals As List(Of String) = DataTables("明细表2").GetValues("区间","区间 Is Not Null")
Dim max As Integer = DataTables("明细表2").Compute("Max(区间)","区间 Is Not Null")
Dim Cols As New List(Of String)
For i As Integer = 1 To 6
    Cols.Add(i)
Next
'For i As Integer = 1 To max
    'Cols.Add(i)
'Next
Dim lst As New List(Of String)
For Each s As String In Cols
    If vals.Contains(s) = False Then
        lst.Add(s)
    End If
Next
vals.Clear
With dt
    For i As Integer = 0 To Cols.Count - 1
        If .DataCols.Contains("余额_" & Cols(i)) = False Then
            .DataCols.Add("余额_" & Cols(i),Gettype(Double))
            For Each s As String In lst
                If vals.Contains(s) = False Then
                    .DataCols("余额_" & Cols(i)).Caption = "余额_" & s
                    vals.Add(s)
                    Exit For
                End If
            Next
        End If
    Next
End With
vals.Clear
For Each dc As DataCol In dt.DataCols
    If dc.Caption.Contains("余额_") = False AndAlso dc.Name <> "客户" Then
        dc.Caption = "余额_" & dc.Caption
    End If
Next
dt.BuildHeader()
For Each dc As DataCol In dt.DataCols
    If dc.Caption.Contains("余额_") = False Then
        If dc.Name <> "客户"  Then
            vals.Add(dc.Caption)
        End If
    Else
        vals.Add(dc.Caption.Split("_")(1))
    End If
Next
vals.Sort
lst.Clear
For Each s As String In vals
    For Each dc As DataCol In dt.DataCols
        If dc.Caption.EndsWith(s) Then
            lst.Add(dc.Name)
        End If
    Next
Next
Dim str As String
For Each s As String In lst
    str + = s & "|100|"
Next
str = "客户|100|" & str.TrimEnd("|")
Tables("统计表1").SetColVisibleWidth(str)

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/26 11:45:00 [只看该作者]

汗,你要灵活变通啊

 

Dim g As New CrossTableBuilder("统计表1", DataTables("明细表2"))
g.HGroups.AddDef("客户")
g.VGroups.AddDef("区间")
g.Totals.AddDef("余额", "余额")
g.HorizontalTotal = True
g.HorizontalProportion = True

g.Build()
MainTable = Tables("统计表1")
Dim Cs() As String =  {1,2,3,4,5,6}

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


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


加好友 发短信
等级:二尾狐 帖子:594 积分:5365 威望:0 精华:0 注册:2011/9/30 8:42:00
  发帖心情 Post By:2015/11/26 11:51:00 [只看该作者]

多谢两位老师


 回到顶部
总数 15 上一页 1 2