以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  对交叉统计进行合计 有个问题需要请教?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=65761)

--  作者:jswjyjf
--  发布时间:2015/3/22 15:08:00
--  对交叉统计进行合计 有个问题需要请教?
由于合计统计需要指定合计统计的字段名称,对于交叉统计得出的表 统计的字段存在变数 ,如何对它进行合计统计?
--  作者:jswjyjf
--  发布时间:2015/3/22 15:09:00
--  
我指的是用代码
--  作者:有点甜
--  发布时间:2015/3/22 15:10:00
--  
 循环所有的列,判断他们的属性caption或者判断列的类型IsNumeric
--  作者:jswjyjf
--  发布时间:2015/3/22 17:22:00
--  

我有个项目 如何实现如下图统计结果

 

 


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20150322171656.jpg
图片点击可在新窗口打开查看

 

 

项目如下


 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目41.rar


--  作者:jswjyjf
--  发布时间:2015/3/22 17:38:00
--  

我先用交叉统计 然后用合计模式 实现了如下结果

 


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20150322173333.jpg
图片点击可在新窗口打开查看

 

 

现在我要求是 1. 把相同款型的排在一条记录上 2.用代码如何实现 我现在是在界面上直接操作的


--  作者:有点甜
--  发布时间: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")


--  作者:jswjyjf
--  发布时间:2015/3/22 18:08:00
--  

谢谢 可以了,现在是如何将这个表打印出来。如果导出到excel 合计数是没有的,如果excel 报表打印 字段的日期是动态的,怎么办 ,大师请教


--  作者:有点甜
--  发布时间: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")


--  作者:jswjyjf
--  发布时间:2015/3/22 20:24:00
--  

谢谢 如果要弄成excel 报表打印,感觉漂亮些,但是日期是变动的 ,好像写代码有点困难 ,还望大师指点一下


--  作者:有点甜
--  发布时间:2015/3/22 20:28:00
--  

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

 

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