一个关于DBGrideh统计的问题,在线等....加100分呀,快来帮一下我,(50分)

  • 主题发起人 主题发起人 醉樊尘
  • 开始时间 开始时间

醉樊尘

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样才能实现DBGrideh自动统计如下:
编号 数量 单价 金额
001 2 10 20
002 5 20 100
合计: 7 30 120
表格里面自动统计,怎样实现;
 
晕,没有一个人用过DBGrideh 控件的吗??
 
首先在DBGridEh1.FooterRowCount设置底部用来统计的行数。
双击DBGridEh1选中要统计数据要在哪一列底部显统计的值。然后在属性面板找到Footer展开后找到fieldName选择要统计的字段名。再修改ValueType的为fvtSum(求和)即可
 
DBGridEh1.FooterRowCount:=1
DBGridEh1.sumlist.active:=true;
 
sql.Clear;
sql.add('select a.销售单号,a.销售日期,a.操作员,a.售货员,a.客户编号,'+
'b.客户名称,a.自动编号,c.商品编号,c.型号,c.品名规格,c.单位,a.进货价,a.单价,a.数量,sum(单价*数量) as 金额,sum(a.进货价*a.数量) as 进货金额,sum(a.单价*a.数量 -a.进货价*a.数量) as 利润金额');
sql.add('from sell as a');
sql.add('left outer join client as b on a.客户编号=b.客户编号');
sql.add('left outer join marque as c on a.自动编号=c.自动编号');
sql.add('where c.型号 like ''%'+edit2.Text+'%''');
sql.add('group by a.销售单号,a.销售日期,a.操作员,a.售货员,a.客户编号,'+
'b.客户名称,a.自动编号,c.商品编号,c.型号,c.品名规格,c.单位,a.进货价,a.单价,a.数量');
sql.add('order by a.销售日期,a.销售单号');
open;
last;
我是这样查询出来的结果,像你那样说的不行,我试过
能说明白一点吗,我刚刚学的这个控件
 
问题还没有解决,在等,
 
DBG_AnalyseResult.FooterRowCount := 1;
DBG_AnalyseResult.Columns[16].Footer.ValueType := fvtSum;(你要统计的字段)
DBG_AnalyseResult.Columns[16].Footer.Value := '0';
DBG_AnalyseResult.SumList.Active := False;
DBG_AnalyseResult.SumList.Active := True;
这样,保证行,祝好运。。
 
查个屁呀!不用查!DBGridEh直接有这种统计功能;
例子我就不发给你了!你自己看看DBGridEh的Demo就知道了;
基本上和ricoo+chenshaizi说的一样;
 
--DBGridEh是能直接写出来,在其字段的footer下
--不过如果你要是非得用DBGrid,建设写成存储过程,
如:Create table #temp(
SortField int identity(1, 1) not null, --标识列,自动加1
编号 varchar(20),
数量 numeric(18,4),
单价 numeric(18,4),
金额 numeric(18,4)
)
insert into #temp(编号,数量,单价,金额)
select 编号,数量,单价,金额 from Table
insert into #temp(编号,数量,单价,金额)
select '合计',sum(数量),sum(单价),sum(金额)
from Table
--然后再查这张临时表
select 编号,数量,单价,金额 from #temp
---------------------------------------------------------------------
--再调用以上存储过程
 
用SELECT和UNION语句即可实现
 
有那么复杂吗?
还存储过程!看看Demo
 
还是不太明白,
能发个例子过来看一下吗?非常感谢!!
wisdomvi@126.com
 
问题解决啦,谢谢各位!!
 
后退
顶部