Foxtable(狐表)用户栏目专家坐堂 → [原创]这样的统计能实现吗?


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

主题:[原创]这样的统计能实现吗?

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/13 11:57:00 [显示全部帖子]

 无法通过汇总得到......唯有手动写代码了。

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

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/13 13:20:00 [显示全部帖子]

楼主的要求太特殊,弄起来挺麻烦......最好问一下狐爸如何动态增加列。

Dim tb As DataTable = DataTables("欠货明细表")

'获得汇总数据
Dim sums As New List(Of Integer)
Dim data As New List(Of List(Of DataRow))
Dim ids As List(Of String) = tb.GetUniqueValues("", "产品型号")
For Each id As String In ids
    Dim sum As Integer = tb.Compute("Sum(欠货数量)", "产品型号='" & id & "'")
    Dim drs As List(Of DataRow) = tb.Select("产品型号='" & id & "'", "合同编号")
    sums.Add(sum)   
    data.Add(drs)
Next

'得到列数
Dim max As Integer = 0
For Each d As List(Of DataRow) In data
    If max < d.Count Then
        max = d.Count
    End If
Next

'生成临时表
Dim ntb As New DataTableBuilder("临时表")
ntb.AddDef("产品型号", tb.baseTable.Columns("产品型号").dataType)
ntb.AddDef("欠货数量", tb.baseTable.Columns("欠货数量").dataType)
For i As Integer = 1 To max
    ntb.AddDef("欠货明细_合同编号" & i, tb.baseTable.Columns("合同编号").dataType)
    ntb.AddDef("欠货明细_欠货数量" & i, tb.baseTable.Columns("欠货数量").dataType)
Next
ntb.Build()

'填充数据
Dim t As Table = Tables("临时表")
Dim count As Integer = 0
For Each d As List(Of DataRow) In data
    Dim r As Row = t.AddNew()
    Dim i As Integer = 0
    For Each dr As DataRow In d
        If i = 0 Then
            r("产品型号") = dr("产品型号")
            r("欠货数量") = sums(count)
        End If
        i = i + 1
        r("欠货明细_合同编号" & i) = dr("合同编号")
        r("欠货明细_欠货数量" & i) = dr("欠货数量")
    Next
    count = count + 1
Next

MainTable = t


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/13 14:21:00 [显示全部帖子]

 楼主估计都自己可以修改的.....

 If sum > 0 Then
     sums.Add(sum)  
     data.Add(drs)
 End If


 回到顶部