DBGrid显示数据如下:
     编号   名称      差值   
     1      a         100      
     2      b         150       
     3      c         100       
现在要在最后加一个合计值:
    合计             350     
差值那三个值(100,150,100)不是从服务器的数据库中的“差值”字段直接select出来的,而是经过一些运算符后得到的
3条记录用了2个“union”:select 编号,名称,last_value(差值) over()-first_value(差值) as 差值 from ...where 编号=1 and... 
union select 编号,名称,last_value(差值) over()-first_value(差值) as 差值 from ...where 编号=2 and... 
union select 编号,名称,last_value(差值) over()-first_value(差值) as 差值
from ...where 编号=3 and...
 
现在在最后加一行来显示“合计”
请问怎么才能直接将DBGrid前面三行中的“差值”那一列的值加在一起?能否不通过数据库就能实现这个加法?

解决方案 »

  1.   

    这就是SQL的问题啊
    用SUM函数就可以解决问题
      

  2.   

    sum函数只能直接把数据库里面的数据求和
    但是我求和的数据不是原始数据,而是已经对原始数据作过计算的数据
    比如数据库里面的是:
    5 ,3,6,8,7,2
    那么我select出来的是3-5=-2,8-6=2,2-7=-5
    而合计值为(-2)+2+(-5)=-5
    现在的问题是我怎么求这个-5来显示在DBGrid的最后一行中?
      

  3.   

    你的差值是不是已经计算出来了,现在想求差值总和?如果是的话用SUM可以,另外也可以用计算字段啊:)
      

  4.   

    好像没有现成的方法。可以先算出合计,再往dbgrid里添加一行显示合计值
      

  5.   

    to Shiyl兄:我的差值是已经计算出来了,但是没有放在数据库中,只是让它显示在了DBGrid上
    to Zhymax兄:DBGrid中的行数是不确定的,我不太清楚应该怎么做才能加最后一行
      

  6.   

    简单点
    1、把现在得结果做成视图,然后再用一句SELECT SUM(差值)搞出合计值。
    2、历遍DBGrid用个FOR语句将结果加起来。
      

  7.   

    如果不用数据,用标准的DBGRID好像是很难办到!不过用第三方控件可以!
    可以试试EHLIB包中的DBGRIDEH控件
    EHLIB包在上面有下载
    http://www.51delphi.com/delphi/soft?type=数据库
      

  8.   

    DBGrid不能实现你要的功能。
    你可以在DBGrid下面放个Edit来显示合计。