以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  分组统计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=25950)

--  作者:与伊相伴
--  发布时间:2012/11/20 16:23:00
--  分组统计

根据需要的时间及其他条件进行查询,用的是外部表,希望在窗口表中显示分组统计

代码如下:

s1 = " scph in (select scph from s_scph where jdrq between \'" & d1 & "\' and  \'" & d2 & "\' and kfbh = \'" &  Trim(e.Form.Controls("Lkfbh").Text) & "\')"
s3 = "Select (Select kfbh from sc_ddzb where scph = a.scph) 客户编号,(Select kfjc from sc_ddzb where scph = a.scph) 客户简称,scph 订单编号,xh 序号,cpbh 产品编号,cpmc 产品名称,lxbh 编号,xm 工序,xmsm 成本名称,je 预算单价,dhsl 订单数量,ysje 预算金额," _
& "(Select avg(dj) from sc_wfjgmx where ddbh = a.scph And xh = a.xh And lxbh = a.lxbh) As 实际单价,(Select sum(sl) from sc_wfjgmx where ddbh = a.scph And xh = a.xh And lxbh = a.lxbh) As 加工数量,((Select avg(dj) from sc_wfjgmx where ddbh = a.scph " _
& "And xh = a.xh And lxbh = a.lxbh)*(Select sum(sl) from sc_wfjgmx where ddbh = a.scph And xh = a.xh And lxbh = a.lxbh))As 加工金额 from sc_cpys a where lxbh In (2103,2106,5104,5107) and "
tb2.Fill(s3 & s1,"spData",True)
Dim b As New GroupTableBuilder("ddgx_hz",dtb2)
b.Groups.AddDef("工序","工序") \'添加日期列用于分组,并用"年"代替原名称
\'b.Groups.AddDef("工序","工序") \'添加日期列用于分组,并用"月"代替原名称
b.Totals.AddDef("预算金额") \'添加数量列用于统计
b.Totals.AddDef("加工金额") \'添加金额列用于统计
b.Subtotal = False \'生成汇总模式
b.Build \'生成统计表

想实现用工序分组汇总,请教求解...

[此贴子已经被作者于2012-11-20 16:24:20编辑过]

--  作者:sgs
--  发布时间:2012/11/20 16:28:00
--  

楼上,这么长的sql语句看得眼花,你写个sql直接汇总也应该不是问题吧

 

或者直接sqlgrouptablebuilder后台统计也行啊

[此贴子已经被作者于2012-11-20 16:28:32编辑过]

--  作者:lin_hailun
--  发布时间:2012/11/20 16:31:00
--  
 呃……面对代码,无言以对。

 你现在运行代码报错,还是怎样?

--  作者:与伊相伴
--  发布时间:2012/11/20 16:39:00
--  

数据是通过sql综合查询得到的数据,加载到窗口表,想在窗口上针对查询出来的数据进行分组统计,就是分组试不出来


--  作者:sgs
--  发布时间:2012/11/20 16:39:00
--  

贴出数据表结构和要求实现的结果,帮你看下


--  作者:与伊相伴
--  发布时间:2012/11/20 17:00:00
--  

实现效果:
图片点击可在新窗口打开查看此主题相关图片如下:样表.jpg
图片点击可在新窗口打开查看

 

数据表查询结果:
图片点击可在新窗口打开查看此主题相关图片如下:数据表.jpg
图片点击可在新窗口打开查看

这个是通过sql语句,用tb.Fill()加载的


--  作者:lin_hailun
--  发布时间:2012/11/20 17:16:00
--  
 呃,楼主,你要的不是分组统计,你要的是汇总统计吧?

Dim t As Table = Tables("窗口1_Table1")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
t.SpillNode = True

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "客户"
g.Caption = "{0} 小计"
t.SubtotalGroups.Add(g)

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "*"
g.Caption = "总计"
t.SubtotalGroups.Add(g)

t.Subtotal()

--  作者:与伊相伴
--  发布时间:2012/11/20 17:30:00
--  

是这样的效果,但是出现了两层了,效果如下:


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

--  作者:与伊相伴
--  发布时间:2012/11/20 17:32:00
--  


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

不知道这段简短的代码如何实现的


--  作者:lin_hailun
--  发布时间:2012/11/20 17:38:00
--  
 楼主估计没有清分组统计和汇总统计,之所以出现两行,是因为你的 电镀 有空格……取出数据的时候,请去除空格。