在DBGride中确定各个要计算的字段的列,将列中的数据相加等计算就行了。
DBGride[2] := (DBGride[0] + DBGride[1]) / 2
DBGride[3] := (DBGride[0] + DBGride[1])

解决方案 »

  1.   

    select 语文,数学,(语文+数学) as 平均分 from table
      

  2.   

    可以使用 Sql 语句实现, 虚拟出两个字段就可以了。 
    Select Chinese ,  Math, 'AVG' = (Chinese + Math) / 2 , 'Total' = 
    (Chines  + Math) from Table_name Where ........ 
    在DBGride 中多显示AVG, Total 两个字段就可以了。
      

  3.   

    在你的clientData中创建两个计算字段,一个字段是求平均分,一个是求总分。具体你去买一本机工出的“Delphi/Kylix数据库开发”,里面讲得非常详细。
      

  4.   

    增加一个Query用Sql语句实现
    在DBGrid中添加两个字段其DataSource设置为Query连接的DataSource
      

  5.   

    创建两个计算字段,一个字段是求平均分,一个是求总分.
    在OnCalculate() 事件中加入代码进行计算即可。
      

  6.   

    carfield() 我的数据还没有进入数据库哟,可以的吗,而且我的是三层。
      

  7.   

    对,我就是这样想的,可是问题是我怎么知道,单元格中的焦点在什么地方,
    我怎么知道,单元格(每一个小格),从数学单元格移到了总分呢??另外这里都是分数还好计算,如果是单价*数量=总价中money与float怎么相互转换!
      

  8.   

    其实这个问题在DELPHI里是很实现的。
    具体实现如下:
    在TABLE控件里新建一个字段,(这个字段是你的库里所没有的。)
    定义该字段为计算字段,具体内容由你自己指定。这样在DBGRID里把该字段显示出来就可以了。
    什么程序也不用写。
      

  9.   

    改变数据并移动到另一格子后会触发DataSouce的OnDataChange事件,在这个事件中写代码即可.
    但这种方法不大好。使用mrzho(mrzho)的方法罢。
      

  10.   

    在MouseMove事件里使用MouseCoord方法,可以得到鼠标位值处的单元格行列号
      

  11.   

    dbgrid中的一行中进行计算,是还没有存入数据库时进行计算,如单价  *  数量 =金额
    我在数量与单价填上内容后,就把金额显示出来,到时后直接app..(0),写入数据库,怎么做?
      

  12.   

    同志,新建一个计算字段,在oncaculate事件中写入zf->Value=sx->value+yw->value 就可以啦。
      

  13.   

    你直接sql语句不就行了吗:
    select chinese,math  (chinese+math) as total,(chinese+math)/2 as average from your talbeselect 语句本身就有计算功能。
      

  14.   

    自己多想一想吧,你用的dbgrid,你要想显示计算结果,就得要添加计算字段(注意:这个计算字段并不是叫你加到数据表中去,表里面还是你那些)然后写几个相关事件不就搞定了嘛,何必搞那么麻烦,好像是什么天大的难题似的
      

  15.   

    那就要用insert();函数插入一个字段了
    好像不是insert();函数什么名字我忘记了:)
    不好意思:)
      

  16.   

    Kingcaiyao(AKing) 我的在DBGrid中的数据还没有存入数据库呢!是三层的哟,它现在只是在dbgrid中的一条记录里由用户刚刚输入上,用sql的话,不是要从数据表里的字段中取出数据吗?可现在数据表里一条记录都还没有呀~
      

  17.   

    在fieldedit中追加,不是在你的表中增加.否则你修改一列值时,系统可不会自动给你计算出结果:)
      

  18.   

    to caijitao(阿修罗)怎么在fieldedit中加呢,请详细说明一下好吗? 谢谢!
      

  19.   

    1、增加计算字段(fkCalculated),选择合理的类型;
    2、在OnCalcFields事件里面进行计算字段的赋值,例如:
      cdsDLYH.FieldByName('总分').AsInteger
        := cdsDLYH.FieldByName('数学').AsInteger
         + cdsDLYH.FieldByName('语文').AsInteger;
    3、计算字段经过我的测试,在你退出数学这个字段的时候就自动计算,即焦点变化的时候就会自动进行计算;
    4、至于你说说焦点移动的事件触发问题,也许你说的是这样,你的例子里面如果平均分是数据库里面有的字段,那么平均分的计算应该使用什么事件,如果你只有表格数据,那么可以使用DBGrid里面的OnColEnter,只要列一变换它就触发这个时间,在这个事件里面赋值平均分字段即可,注意在赋值前最好加上cdsDLYH.Edit这么一个语句,或者进行如下判定:
      if cdsDLYH.Modified then
      begin{如果本记录有记录信息变更,这更新平均分字段}
      cdsDLYH.Edit;
      ……
      end;
    如果你想必须要移动到平均分字段才进行平均分的计算,那么,在OnColEnter事件里面加上类似:
      if dbgDLYH.SelectedField.FieldName = '平均分' then
      begin
        进行平均分字段的赋值……
      end;如果还不明白,请继续提问。