我想在动态的计算一下dxdbgrid某列的汇总值,然后还原.
begin
  dxDBGrid1.ColumnByFieldName('Weight').SummaryFooterType:=cstSum;
  dxDBGrid1.ColumnByFieldName('Weight').SummaryFooterFormat := ' 0.00';
  edit4.text:=dxDBGrid1.ColumnByFieldName('Weight').SummaryFooterText;
  dxDBGrid1.ColumnByFieldName('Weight').SummaryFooterType:=cstNone;
end;不行,为什么?还有一个问题,我觉得dxdbgrid汇总或什么的比较快,它内部的机制是怎么样了,能不能粗略的讲一下?(不想看源代码)

解决方案 »

  1.   

    看一下SQL的书吧
    上面有的
      

  2.   

    就是利用dxdbgrid的汇总,取一下某列的汇总值.如何作?
      

  3.   

    我来交你吧,
    首先设showsummaryFooter为True;
    之后你在要汇总的字段上设置一下
    btGrid.SummaryGroupName := 'RecordCount';//一个grid为一个最好
    btGrid.SummaryType := cstNone;//类型
    btGrid.SummaryFooterType := cstSum;//求和
    你在这个列的OnDrawSummaryFooter事件中
    procedure TfrmBillBureauDraw.GetSumMoney(Sender: TObject; ACanvas: TCanvas;
      ARect: TRect; var AText: string; var AAlignment: TAlignment;
      AFont: TFont; var AColor: TColor; var ADone: Boolean);
    begin
       FSumMoney:=AText;//这个就是你取得的值
    end;
      

  4.   

    要egoloadallrecords:=true;
       keyfield:=‘你的字段’;
      

  5.   

    加一句刷新就可以取到了,结贴dxDBGrid_Main.RefreshGroupColumns;