Foxtable(狐表)用户栏目专家坐堂 → 请教统计问题


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

主题:请教统计问题

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/25 15:20:00 [显示全部帖子]

为什么不用交叉统计?

 

Dim g As New CrossTableBuilder("统计表1", DataTables("喷涂车间工资表"))
g.HGroups.AddDef("姓名")
g.VGroups.AddDef("日期", DateGroupEnum.None)
g.Totals.AddDef("计时工时", "计时工时")
g.Totals.AddDef("总金额", "总金额")
g.Build()
MainTable = Tables("统计表1")

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/25 15:21:00 [显示全部帖子]

你直接用代码统计也可以啊

 

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

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/25 16:06:00 [显示全部帖子]

加条件

 

Dim g As New CrossTableBuilder("统计表1", DataTables("喷涂车间工资表"))
g.HGroups.AddDef("姓名")
g.VGroups.AddDef("日期", DateGroupEnum.None)
g.Totals.AddDef("计时工时", "计时工时")
g.Totals.AddDef("总金额", "总金额")

Dim d As Date = New Date(2016, 2,1)

g.Filter = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
g.Build()
MainTable = Tables("统计表1")


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/25 17:16:00 [显示全部帖子]

TextChanged事件

 

Dim d As Date
If Date.TryParse(e.sender.text, d) Then
    Dim g As New CrossTableBuilder("统计表1", DataTables("喷涂车间工资表"))
    g.HGroups.AddDef("姓名")
    g.VGroups.AddDef("日期", DateGroupEnum.None)
    g.Totals.AddDef("计时工时", "计时工时")
    g.Totals.AddDef("总金额", "总金额")
   
    d = New Date(d.year, d.month, 1)
   
    g.Filter = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
    e.Form.controls("table1").Table.datasource = g.BuildDataSource
End If


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/25 17:49:00 [显示全部帖子]

Dim d As Date
If Date.TryParse(e.sender.text, d) Then
    Dim g As New CrossTableBuilder("统计表1", DataTables("喷涂车间工资表"))
    g.HGroups.AddDef("姓名")
    g.VGroups.AddDef("日期", DateGroupEnum.None)
    g.Totals.AddDef("计时工时", "计时工时")
   
    d = New Date(d.year, d.month, 1)
   
    g.Filter = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
    Dim t As Table = e.Form.controls("table1").Table
    t.StopRedraw
    t.datasource = g.BuildDataSource
    t.DataTable.DataCols.add("数据", Gettype(String))
    t.DataTable.ReplaceFor("数据", "工时")
   
    g = New CrossTableBuilder("统计表1", DataTables("喷涂车间工资表"))
    g.HGroups.AddDef("姓名")
    g.VGroups.AddDef("日期", DateGroupEnum.None)
    g.Totals.AddDef("总金额", "总金额")
   
    g.Filter = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
    g.Build
    For Each r As Row In Tables("统计表1").Rows
        Dim nr As Row = t.AddNew
        For i As Integer = 0 To t.Cols.count - 2
            nr(i) = r(i)
        Next
        nr("数据") = "金额"
    Next
    t.Cols("数据").Move(1)
    t.sort = "姓名,数据"
    t.ResumeRedraw
End If

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/25 18:05:00 [显示全部帖子]

金额列统计的是总金额啊,你可以改成你对应的计时金额列啊

 

g.Totals.AddDef("总金额", "总金额")


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/25 18:10:00 [显示全部帖子]

汗,什么都要别人帮你做

 

Dim d As Date
If Date.TryParse(e.sender.text, d) Then
    Dim g As New CrossTableBuilder("统计表1", DataTables("喷涂车间工资表"))
    g.HGroups.AddDef("姓名")
    g.VGroups.AddDef("日期", DateGroupEnum.None)
    g.Totals.AddDef("计时工时", "计时工时")
   
    d = New Date(d.year, d.month, 1)
   
    g.Filter = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
    Dim t As Table = e.Form.controls("table1").Table
    t.StopRedraw
    t.datasource = g.BuildDataSource
    t.DataTable.DataCols.add("数据", Gettype(String))
    t.DataTable.ReplaceFor("数据", "工时")
   
    g = New CrossTableBuilder("统计表1", DataTables("喷涂车间工资表"))
    g.HGroups.AddDef("姓名")
    g.VGroups.AddDef("日期", DateGroupEnum.None)
    g.Totals.AddDef("总金额", "总金额")
   
    g.Filter = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
    g.Build
    For Each r As Row In Tables("统计表1").Rows
        Dim nr As Row = t.AddNew
        For i As Integer = 0 To t.Cols.count - 2
            nr(i) = r(i)
        Next
        nr("数据") = "金额"
    Next
    t.DataTable.DataCols.add("小计", Gettype(String))
    For Each r As Row In t.Rows
        Dim sum As Double = 0
        For i As Integer = 1 To t.Cols.count - 3
            sum += r(i)
        Next
        r("小计") = sum
    Next
    t.Cols("数据").Move(1)
    t.sort = "姓名,数据"
    t.ResumeRedraw
End If


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/27 12:42:00 [显示全部帖子]

Dim d As Date
If Date.TryParse(e.sender.text, d) Then
    Dim g As New CrossTableBuilder("统计表1", DataTables("喷涂车间工资表"))
    g.HGroups.AddDef("姓名")
    g.VGroups.AddDef("日期", DateGroupEnum.None)
    g.Totals.AddDef("计时工时", "计时工时")
   
    d = New Date(d.year, d.month, 1)
   
    g.Filter = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
    Dim t As Table = e.Form.controls("table1").Table
    t.StopRedraw
    t.datasource = g.BuildDataSource
    t.DataTable.DataCols.add("数据", Gettype(String))
    t.DataTable.ReplaceFor("数据", "工时")
   
    g = New CrossTableBuilder("统计表1", DataTables("喷涂车间工资表"))
    g.HGroups.AddDef("姓名")
    g.VGroups.AddDef("日期", DateGroupEnum.None)
    g.Totals.AddDef("总金额", "总金额")
   
    g.Filter = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
    g.Build
    For Each r As Row In Tables("统计表1").Rows
        Dim nr As Row = t.AddNew
        For i As Integer = 0 To t.Cols.count - 2
            nr(i) = r(i)
        Next
        nr("数据") = "金额"
    Next
    t.DataTable.DataCols.add("小计", Gettype(Double))
    For Each r As Row In t.Rows
        Dim sum As Double = 0
        For i As Integer = 1 To t.Cols.count - 3
            sum += r(i)
        Next
        r("小计") = sum
    Next
    t.Cols("数据").Move(1)
    t.sort = "姓名,数据"
    t.DataTable.DataCols.Add("_Sortkey", Gettype(Double))
    For Each r As Row In t.Rows
       
        r("_Sortkey") = r.Index
    Next
    t.sort = ""
   
    Dim r1 As Row = t.AddNew
    Dim r2 As Row = t.AddNew
    r1("姓名") = "工时汇总"
    r1("_Sortkey") = t.Rows.count
    r2("姓名") = "金额汇总"
    r2("_Sortkey") = t.Rows.count + 1
   
   
    For i As Integer = 0 To t.Cols.count - 1
        If t.Cols(i).IsNumeric Then
            r1(i) = t.Compute("sum(" & t.Cols(i).name & ")", "数据 = '工时'")
            r2(i) = t.Compute("sum(" & t.Cols(i).name & ")", "数据 = '金额'")
        End If
    Next
    t.ResumeRedraw
End If

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/28 9:52:00 [显示全部帖子]

条件加载这里

 

 g.Filter = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"

改成

 

 g.Filter = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "# and 姓名 Is not null"


 回到顶部