问一个问,不要笑我呵呵:
我现在想统计我查询出来的DBGrid1中的所有记录中的一个字段相加值,总是不对,求助???

解决方案 »

  1.   

    你可用DBGridEH控件,在底部加个合计栏
      

  2.   

    如果不想用第三方,那就在DBGrid中显示带合计的数据集,如
    select a,b from table
    union 
    select sum(a),sum(b) from table
      

  3.   

    用SUN阿..
    再不行?就自己用循环去写.
      

  4.   

    朋友:select a,b from table
    union 
    select sum(a),sum(b) from table
    不行
    我是这样统计记录总数的:
    Edit1.Text := IntToStr(self.DBGrid1.DataSource.DataSet.RecordCount);
    我想也可以用FieldValues这个,但是我不知道怎么写................
      

  5.   

    self.DBGrid1.DataSource.DataSet.RecordCount是统计记录的总条数,不是你要的某个字段的相加值
    SQL应该这么写
    select a,b,Sum(a) AS Sum_A from table Group By a,b
    最后只要self.DBGrid1.DataSource.DataSet.FieldByName('Sum_A').AsString就得到了相加值
      

  6.   

    在数据结集中先用sql语句查找到你需要的纪录,然后在遍历数据集中的所有记录,把你要求和的字段值加起来就可以了
      

  7.   

    如果不用二楼的方法
    则只能用循环写了!
    var
    ZHJ : Double;  //总合计:ZHJ := 0;
    with DBGrid1.DataSource.DataSet do
    begin
      First;
      while not Eof do
      begin
        ZHJ := ZHJ + FieldByName('要统计的字段名').AsFloat;
        Next;
      end;
    end;Edit1.Text := FloatToStr(ZHJ);
      

  8.   

    lrj2005你好!
    我现在已经查询出来我要统计的记录:
    但是你说的??遍历数据集中的所有记录,把你要求和的字段值加具体怎么实现
    谢谢
      

  9.   

    hqhhh(枫叶)你好!
    能加加我的QQ吗?谢谢398934056
    谢谢你写的程序。
      

  10.   

    var
    ZHJ : Double;  //总合计:
    begin
    ZHJ := 0;
    with DBGrid1.DataSource.DataSet do
    begin
     First;
      while not Eof do
      begin
        ZHJ := ZHJ + FieldByName('allinvest').AsFloat;
        Next;
      end;
    end;Edit1.Text := FloatToStr(ZHJ);
    end;
    这个程序不能通过,但是还是不对,再帮忙看看哪个