Foxtable(狐表)用户栏目专家坐堂 → 对交叉统计进行合计 有个问题需要请教?


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

主题:对交叉统计进行合计 有个问题需要请教?

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


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

 循环所有的列,判断他们的属性caption或者判断列的类型IsNumeric

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


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

Dim g As New CrossTableBuilder("统计表1", DataTables("jgd"))
g.HGroups.AddDef("加工单号")
g.HGroups.AddDef("客户名称")
g.HGroups.AddDef("件重")
g.VGroups.AddDef("加工日期", DateGroupEnum.Day, "{0}日")
g.Totals.AddDef("件数")
g.Build()

Dim dt As DataTable = DataTables("统计表1")
Dim count As Integer = dt.DataCols.Count - 3
Dim bds As String = ""
For i As Integer  = 1 To count
    bds &= "isnull(件数_" & i & ", 0)+"
Next
dt.DataCols.Add("件数_" & count + 1, Gettype(Integer), bds.Trim("+"), "月计数")
dt.DataCols.Add("件数_" & count + 2, Gettype(Double), "(" & bds.Trim("+") & ")*件重", "月重量")

For i As Integer  = 1 To count + 2
    Tables("统计表1").Cols("件数_" & i).GrandTotal = True
Next
Tables("统计表1").GrandTotal = True
MainTable = Tables("统计表1")


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


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

Dim g As New CrossTableBuilder("统计表1", DataTables("jgd"))
g.HGroups.AddDef("加工单号")
g.HGroups.AddDef("客户名称")
g.HGroups.AddDef("件重")
g.VGroups.AddDef("加工日期", DateGroupEnum.Day, "{0}日")
g.Totals.AddDef("件数")
g.Build()

Dim dt As DataTable = DataTables("统计表1")
Dim count As Integer = dt.DataCols.Count - 3

dt.DataCols.Add("件数_" & count + 1, Gettype(Integer), "", "月计数")
dt.DataCols.Add("件数_" & count + 2, Gettype(Double), "", "月重量")
For Each dr As DataRow In dt.DataRows
    Dim sum As Double = 0
    For i As Integer  = 1 To count
        sum += val(dr("件数_" & i))
    Next
    dr("件数_" & count + 1) = sum
    dr("件数_" & count + 2) = sum * dr("件重")
Next


Dim ndr As DataRow = dt.AddNew
ndr("客户名称") = "合计"
For i As Integer  = 1 To count + 2
    ndr("件数_" & i) = dt.Compute("sum(件数_" & i & ")")
Next
MainTable = Tables("统计表1")


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


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

 如果你要弄成excel报表,你就用代码生成模板啊,在对应的位置填上各个字段就行啊。

 

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

 


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


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

以下是引用jswjyjf在2015/3/22 20:32:00的发言:

固定的excel 我会的,但是字段是变动的 因为原始表的日期是活的,因此交叉生成的日期也不是固定的,有点难度

 

参考上面的代码,循环每一列,填入excel模板就行啊


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


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


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


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

 看14楼

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


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

 For i As Integer = 0 To Tables("表a").cols.count - 1
    sheet(1, i).Text = Tables("表a").cols(i).Name
Next

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


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

 能不能有点进步?

 

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


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


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

  谁说是死的啊。替换成自己的内容啊

 

Dim Book As New XLS.Book(ProjectPath & "Attachments\出库单.xls") '打开模板
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Sheet(6,6).Value = "制单人:" & User.Name '修改模板,加入制单人信息
Book.Build() '生成细节区
Book.Save("c:\reports\test.xls") '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = "c:\reports\test.xls"
Proc.Start()


 回到顶部
总数 20 1 2 下一页