急!!!dbgrideh合计行的问题 如何把dbgrideh中的某几列的所有行作一个统计(只要累加就好),在最后一行中显示出统计数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的方法是这样的:先找一个排序字段,确保结果排序正确,例如:IDNO<---自动加一的字段;然后开始写.select a,b,c,d from (SELECT A,B,C,D,IDNO FROM TABUNIONSELECT '' AS A,'合计:' AS B,SUM(C) AS C,SUM(D) AS D,999999 as idno from tab ) as aaa order by aaa.idno我把IDNO的值给得相当大,确保它排到后面去.就成了 这样不行吧,能不能在dbgrideh控件上做文章 首先来说,我就是这样做的.系统已经运行很久了.可以肯定行.我不喜欢在dbgrideh控件上做文章.:-) 做个虚拟字段用于几列的横向求和,然后用dbgrideh用的统计功能进行竖向求和`~ 我知道dbgrideh有竖向统计功能,帮我看一下这段语句,Procedure DbGridEhFoot( pDbGrid:TDBGridEh; pcFields: string; pvtType : TFooterValueType );var nFldLoop : integer ; cFieldName : string ; tmpFldList : TStrings ;begin pDbGrid.FooterRowCount := 1; // 指定网格尾部统计行行数 pDbGrid.SumList.Active := true; // 激活统计 pDbGrid.FooterColor := clBtnFace ; // 指定统计行颜色 tmpFldList := TStringList.Create ; StrToStringList( Uppercase(pcFields),',',tmpFldList ); // 将字符串转换为串列表 For nFldLoop := 0 to pDbGrid.Columns.Count -1 do begin cFieldName := pDbGrid.Columns[nFldLoop].FieldName ; // 网格列字段名 if tmpFldList.IndexOf( uppercase( cFieldName ) ) >= 0 then begin pDbGrid.Columns[nFldLoop].Footer.ValueType := pvtType ; // 统计类型 end; end ; tmpFldList.Free ;end;---------------------------------------------------------------------------------- StrToStringList( Uppercase(pcFields),',',tmpFldList ); // 将字符串转换为串列表-----------------------------------------------------------------------------------上面这条语句出错了,不知道是哪里的问题 只要设置,无须写代码~~将dbgrideh 的FoolTerRowCount设为1,在每列Footer集合下设置FileName,ValueType(计算类型)再将SumList 中Active设为True 表格会自动进行计算你所选择的计算类型! edit控件如何捕捉鍵盤呀! 关于将grid里英文内容显示为对应中文的问题 delphi2006的BUG 如何将图片保存进入sql数据库????高分相酬! 简单问题,在线等待 一个简单的关于函数返回值的问题:) 还是关于屏蔽热键的问题。 请问:把做好的程序制作成安装程序,你用什么软件好呢?(最好是中文版的哟,在线等待) DELPHI中怎么操作EXCEL文档? 我是delphi初学者,如今市面delphi书泛滥,那位大虾能推荐几本好书! 为什么Form1调用form2时会出错呢。不同的调用方法,结果却是完全不一样。。。。高手指教 如何开辟一个线程,专门用于处理定时器里面的代码
先找一个排序字段,确保结果排序正确,例如:IDNO<---自动加一的字段;然后开始写.
select a,b,c,d from (
SELECT A,B,C,D,IDNO FROM TAB
UNION
SELECT '' AS A,'合计:' AS B,SUM(C) AS C,SUM(D) AS D,999999 as idno from tab ) as aaa order by aaa.idno
我把IDNO的值给得相当大,确保它排到后面去.
就成了
:-)
var nFldLoop : integer ;
cFieldName : string ;
tmpFldList : TStrings ;
begin
pDbGrid.FooterRowCount := 1; // 指定网格尾部统计行行数
pDbGrid.SumList.Active := true; // 激活统计
pDbGrid.FooterColor := clBtnFace ; // 指定统计行颜色 tmpFldList := TStringList.Create ;
StrToStringList( Uppercase(pcFields),',',tmpFldList ); // 将字符串转换为串列表 For nFldLoop := 0 to pDbGrid.Columns.Count -1 do
begin
cFieldName := pDbGrid.Columns[nFldLoop].FieldName ; // 网格列字段名
if tmpFldList.IndexOf( uppercase( cFieldName ) ) >= 0 then
begin
pDbGrid.Columns[nFldLoop].Footer.ValueType := pvtType ; // 统计类型
end;
end ;
tmpFldList.Free ;
end;----------------------------------------------------------------------------------
StrToStringList( Uppercase(pcFields),',',tmpFldList ); // 将字符串转换为串列表
-----------------------------------------------------------------------------------
上面这条语句出错了,不知道是哪里的问题
将dbgrideh 的FoolTerRowCount设为1,在每列Footer集合下设置FileName,ValueType(计算类型)
再将SumList 中Active设为True 表格会自动进行计算你所选择的计算类型!