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


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

主题:请教表的统计

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/3 10:15:00 [显示全部帖子]

 请不要这样做,这样做不规范,这样做累死自己。

 

 直接用分组统计,或者交叉统计去做就好。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/3 11:03:00 [显示全部帖子]

代码,每次重新生成

 

Dim cidx As Integer = 0
Dim ridx As Integer = 0
Dim dt As DataTable = DataTables("表B")
Dim t As Table = Tables("表B")
dt.DataRows.Clear
Dim fr As Row
Dim cname(1) As String
Dim dta As DataTable = DataTables("表A")
Dim sum1, sum2 As Integer
For Each qy As String In dta.GetValues("区域")
    Dim qys As List(Of String) = dta.GetValues("企业", "区域 = '" & qy & "'")
    If cidx = 0 Then
        cname(0) = "区域"
        cname(1) = "销售金额"
        fr = t.AddNew
        fr(cname(0)) = qy
        dt.AddNew(qys.Count+1)
        ridx = fr.index + qys.Count
    Else If cidx = 1 Then
        cname(0) = "区域1"
        cname(1) = "销售金额1"
        fr(cname(0)) = qy
        If fr.Index + qys.Count > ridx Then
            dt.AddNew(fr.Index + qys.Count - ridx)
            ridx = fr.Index + qys.Count
        End If
    End If
    For i As Integer = 0 To qys.Count - 1
        Dim r As Row = t.Rows(fr.Index+i+1)
        r(cname(0)) = qys(i)
        r(cname(1)) = dta.Compute("sum(销售金额)", "区域 = '" & qy & "' and 企业 = '" & qys(i) & "'")
    Next
    t.Rows(ridx+1)(cname(0)) = "小计"
    t.Rows(ridx+1)(cname(1)) = dta.Compute("sum(销售金额)", "区域 = '" & qy & "'")
    If cidx = 0 Then
        sum1 += val(t.Rows(ridx+1)(cname(1)))
        cidx = 1
    Else If cidx = 1 Then
        sum2 += val(t.Rows(ridx+1)(cname(1)))
        cidx = 0
    End If
Next
Dim zjr As Row = t.AddNew
zjr("区域") = "总计"
zjr("销售金额") = sum1
zjr("区域1") = "总计"
zjr("销售金额1") = sum2


 回到顶部