怎样计算Dbgrid中某列的总和 for   i:=0   to   dbgrid1.DataSource.DataSet.RecordCount-1   do
              begin
                if DbGrid1.Fields[i].FieldName='所求列的字段名' then
                sum:=sum+DbGrid1.Fields[i].Value;
              end   ;
目前是这么写的,但是错的。
请教各位高手,谢谢 

解决方案 »

  1.   

    用第三方控件,很容易做到,如cxGrid
      

  2.   

    也可以sum:=0;
    for i:=0 to adoquery1.RecordCount-1 do
      sum:= sum+adoquery1FieldByName('单价列').AsFloat;
      

  3.   

    另外一些三方控件实现的求和效果比较好,cxGrid,GridEH之类
    var
    bookMark: TBookMark;
      sum:=0;
      bookMark:=dbgrid1.DataSource.DataSet.GetBook;
      dbgrid1.DataSource.DataSet.DisableControls;
      dbgrid1.DataSource.DataSet.First;
      for i:=0 to dbgrid1.DataSource.DataSet.RecordCount-1 do
      begin
        sum:=sum+dbgrid1.DataSource.DataSet.FieldByName('求和字段名').Value;
        dbgrid1.DataSource.DataSet.Next;
      end;
      dbgrid1.DataSource.DataSet.GotoBook(bookMark);
      dbgrid1.DataSource.DataSet.EnableControls;
      

  4.   

    sum:=0;
    for i:=0 to adoquery1.RecordCount-1 do
      sum:= sum+adoquery1FieldByName('单价列').AsFloat; 
     
      

  5.   

    根据你的dbGrid的数据源再做一个查询。
      

  6.   

    楼主可以使用GirdEh组件,带有这个功能的。另外也可以这样写:var
      Sum: Double;
      bk: TBook;
    begin
      Sum := 0;
      bk := DataSet.GetBook;
      DataSet.DisableControls;
      try
        while not DataSet.Eof do begin
          Sum := Sum + DataSet.FieldByName('').AsFloat;
          DataSet.Next;
        end;
        DataSet.GotoBook(bk);
      finally
        DataSet.EnableControls;
        DataSet.FreeBook(bk);
      end;