但是不移动数据记录的情况下
但是不用 select sum(money) from table 有什么方式???给分

解决方案 »

  1.   

    那就使用 DBGridEh 来实现吧, 设置Footer的属性就可以了,很方便的.
      

  2.   

    1.可以用TClientDataSet的fkAggregate类字段.(仅TClientDataSet,并且不会显示在DBGRID中)2.直接用SQL语句加上WITH { CUBE | ROLLUP } ]  (可以显示在DBGRID中)3.第三方控件.如DBGridEh
      

  3.   

    给你一段BCB的代码参考,看起来dbgrid中的记录没有移动:
    代码功能为累加dbgrid中选中的单元格的那一列Query是adoquery
      int ln;//记录当前行号
      
      int col=DBGrid1->SelectedIndex + 1;
      Screen->Cursor=crHourGlass;
      Query->DisableControls();
      ln=Query->RecNo-1;
      Query->First();
      float sum=0.0;
      try
      {
        while(!Query->Eof)
        {
          sum+=Query->Fields->FieldByNumber(col)->AsFloat;
          Query->Next();
        }
        edt_sum->Text=FloatToStr(sum);
        Clipboard()->SetTextBuf(FloatToStr(sum).c_str());  }
      __finally
      {
        Query->First();
        Query->MoveBy(ln);//恢复到保存前查看的行号
        Query->EnableControls();
        Screen->Cursor=crDefault;
      }
      

  4.   

    用三方控件就很容易,用DBGRID就要写代码.