Foxtable(狐表)用户栏目专家坐堂 → 求动态分组统计


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

主题:求动态分组统计

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


加好友 发短信
等级:婴狐 帖子:76 积分:804 威望:0 精华:0 注册:2015/2/13 9:06:00
  发帖心情 Post By:2015/9/4 17:23:00 [只看该作者]

谢谢大红袍老师!
运行通过了

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


加好友 发短信
等级:婴狐 帖子:76 积分:804 威望:0 精华:0 注册:2015/2/13 9:06:00
  发帖心情 Post By:2015/9/6 16:39:00 [只看该作者]

代码运行通过了,但是不能统计小于1(含负数值)的数据

分组组距小于1就没有统计数据

分组组距Dim slen As Integer = Forms("窗口1").Controls("TextBox2").Text

还请老师再帮我看看

[此贴子已经被作者于2015/9/6 16:45:37编辑过]

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


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

Dim tbs() As String = { "表1", "表2"}
Dim cs1() As String = { "指标1", "指标2"}
Dim cs2() As String = { "指标A", "指标B", "指标C"}
Dim snum As Integer = Forms("窗口1").Controls("TextBox1").Text
Dim slen As Integer = Forms("窗口1").Controls("TextBox2").Text
Dim scount As Integer = Forms("窗口1").Controls("TextBox3").Text

Dim ls As new List(Of String())

ls.Add(cs1)

ls.add(cs2)

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("列名", Gettype(String), 32)
dtb.AddDef("标题", Gettype(String), 32)
For i As Integer = 1 To scount
    dtb.AddDef("临时列" & i, Gettype(Double), "", snum+slen*(i-1) & "-" & snum+slen*i)
Next
dtb.Build()

For i As Integer = 0 To tbs.Length - 1
   
    Dim cs As String() = ls(i)
   
    For j As Integer = 0 To cs.Length - 1
       
        Dim fdr = DataTables("统计").AddNew
       
        fdr("列名") = cs(j)
       
        fdr("标题") = Tables(tbs(i)).Cols(cs(j)).Caption
       
        Dim All As Double = Tables(tbs(i)).Compute("count(" & cs(j) & ")", cs(j) & " is not null")
        For Each dc As DataCol In DataTables("统计").datacols
            If dc.Name Like "临时列*" Then
               
                Dim ary() As String = dc.Caption.Split("-")
                If ary.length = 2 Then
                    Dim c As Double = Tables(tbs(i)).Compute("count(" & cs(j) & ")", cs(j) & " >= " & ary(0) & " and " & cs(j) & " < " & ary(1) & " and " & cs(j) & " is not null")
                    fdr(dc.name) = c / All *100
                Else If ary.length = 3 Then
                    Dim c As Double = Tables(tbs(i)).Compute("count(" & cs(j) & ")", cs(j) & " >= " & -ary(1) & " and " & cs(j) & " < " & ary(2) & " and " & cs(j) & " is not null")
                    fdr(dc.name) = c / All *100
                Else If ary.length = 4 Then
                    Dim c As Double = Tables(tbs(i)).Compute("count(" & cs(j) & ")", cs(j) & " >= " & -ary(1) & " and " & cs(j) & " < " & -ary(3) & " and " & cs(j) & " is not null")
                    fdr(dc.name) = c / All *100
                End If
            End If
        Next
       
    Next
   
Next

MainTable = Tables("统计")


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


加好友 发短信
等级:婴狐 帖子:76 积分:804 威望:0 精华:0 注册:2015/2/13 9:06:00
  发帖心情 Post By:2015/9/6 17:50:00 [只看该作者]

可以统计负数了,单还不能统计小数

给老师添麻烦了,再帮我修改一下

 


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


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

Dim tbs() As String = { "表1", "表2"}
Dim cs1() As String = { "指标1", "指标2"}
Dim cs2() As String = { "指标A", "指标B", "指标C"}
Dim snum As Double = Forms("窗口1").Controls("TextBox1").Text
Dim slen As Double = Forms("窗口1").Controls("TextBox2").Text
Dim scount As Double = Forms("窗口1").Controls("TextBox3").Text

Dim ls As new List(Of String())

ls.Add(cs1)

ls.add(cs2)

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("列名", Gettype(String), 32)
dtb.AddDef("标题", Gettype(String), 32)
For i As Integer = 1 To scount
    dtb.AddDef("临时列" & i, Gettype(Double), "", snum+slen*(i-1) & "-" & snum+slen*i)
Next
dtb.Build()

For i As Integer = 0 To tbs.Length - 1
   
    Dim cs As String() = ls(i)
   
    For j As Integer = 0 To cs.Length - 1
       
        Dim fdr = DataTables("统计").AddNew
       
        fdr("列名") = cs(j)
       
        fdr("标题") = Tables(tbs(i)).Cols(cs(j)).Caption
       
        Dim All As Double = Tables(tbs(i)).Compute("count(" & cs(j) & ")", cs(j) & " is not null")
        For Each dc As DataCol In DataTables("统计").datacols
            If dc.Name Like "临时列*" Then
               
                Dim ary() As String = dc.Caption.Split("-")
                If ary.length = 2 Then
                    Dim c As Double = Tables(tbs(i)).Compute("count(" & cs(j) & ")", cs(j) & " >= " & ary(0) & " and " & cs(j) & " < " & ary(1) & " and " & cs(j) & " is not null")
                    fdr(dc.name) = c / All *100
                Else If ary.length = 3 Then
                    Dim c As Double = Tables(tbs(i)).Compute("count(" & cs(j) & ")", cs(j) & " >= " & -ary(1) & " and " & cs(j) & " < " & ary(2) & " and " & cs(j) & " is not null")
                    fdr(dc.name) = c / All *100
                Else If ary.length = 4 Then
                    Dim c As Double = Tables(tbs(i)).Compute("count(" & cs(j) & ")", cs(j) & " >= " & -ary(1) & " and " & cs(j) & " < " & -ary(3) & " and " & cs(j) & " is not null")
                    fdr(dc.name) = c / All *100
                End If
            End If
        Next
       
    Next
   
Next

MainTable = Tables("统计")


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


加好友 发短信
等级:婴狐 帖子:76 积分:804 威望:0 精华:0 注册:2015/2/13 9:06:00
  发帖心情 Post By:2015/9/7 8:20:00 [只看该作者]

问题解决了

谢谢大红袍老师!


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