以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- 请教表的统计 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=53236)
|
-- 作者:hbhb
-- 发布时间:2014/7/3 10:06:00
-- 请教表的统计
请教大师:如下例1、如何根据表a生成表b格式的统计表? 2、表a数据变化后,表b联动?
一边看球,一边思考如何搞?人家球进了5个,我还是零!只有 拜托!拜托!大师
|
-- 作者:Bin
-- 发布时间:2014/7/3 10:14:00
--
直接用分组统计
Dim g As New GroupTableBuilder("统计表1", DataTables("表A")) g.Groups.AddDef("区域") g.Groups.AddDef("企业") g.Totals.AddDef("销售金额") g.SubTotal = True g.Build() MainTable = Tables("统计表1")
|
-- 作者:有点甜
-- 发布时间:2014/7/3 10:15:00
--
请不要这样做,这样做不规范,这样做累死自己。
直接用分组统计,或者交叉统计去做就好。
|
-- 作者:hbhb
-- 发布时间:2014/7/3 10:26:00
--
老板就喜欢这种样式的报表?没办法!通过代码如何能达到这种效果?
|
-- 作者:Bin
-- 发布时间:2014/7/3 10:28:00
--
输出报表的时候,在专业报表处理吧. 狐表中就不要这么折腾了.
|
-- 作者:hbhb
-- 发布时间:2014/7/3 10:30:00
--
如果狐表能与xbrl有效结合,那市场大的去了。销售至少100亿
|
-- 作者:hbhb
-- 发布时间:2014/7/3 10:50:00
--
帮忙呀兄弟!
|
-- 作者:有点甜
-- 发布时间: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
|
-- 作者:hbhb
-- 发布时间:2014/7/3 11:33:00
--
谢谢甜大师!有情后补!
|