有一个DBGrid与ADOQuery1连接,需要在DBGrid中新增一列,用于放前面数据列的和。请问是否可行?如何做?请指教!

解决方案 »

  1.   

    这个.........没搞过。有点难度。或者用两个视图,一个视图放数据,一个视图统计,一起加入到DBGIRD中,不知行不。
      

  2.   

    第三方控件 dxdbgrid
    下载地址
    http://www.delphifans.com/SoftView/SoftView_11.html
    dxdbgrid
    属性设置
    showsummaryfooter true
    双击dxdbgrid
    选择columns
    列表中
    选择你要数据列的和的列
    summaryfooderfield 本列名称
    summaryfoodertype cssum
      

  3.   

    在DBGRID中不可能,你可以直接增加一列,但你的数据填不进到,因为没有数据源(每一列都要有一个FIELD)所以数据没办法保存,你可以在他的数据源上加一个统计字段,这样你只要一保存就自动给你算出来
      

  4.   

    在数据集组件中增加计算字段可以.dbgrid只是数据感知.所有数据都应该存在于数据集组件里.应该是吧.呵呵.
      

  5.   

    用sql来写,将计算出来的结果自己定义一个字段再dbgridex中显示出来。跟排序一样。
      

  6.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, Grids, DBGrids, DBTables, ExtCtrls, StdCtrls;type
      TForm1 = class(TForm)
        Table1: TTable;
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        Table1BDEDesigner2: TStringField;
        Table1BDEDesigner3: TStringField;
        Table1BDEDesigner4: TStringField;
        Table1BDEDesigner9: TStringField;
        Table1BDEDesigner15: TStringField;
        Table1BDEDesigner16: TFloatField;
        Table1BDEDesigner17: TFloatField;
        Table1Field: TCurrencyField;
        Label1: TLabel;
        Bevel1: TBevel;
        procedure Table1CalcFields(DataSet: TDataSet);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    procedure TForm1.Table1CalcFields(DataSet: TDataSet);
    begin
      Dataset.fieldbyname('利润').ascurrency:= Dataset.fieldbyname('金额').ascurrency- Dataset.fieldbyname('进价').ascurrency*9
    end;
    end.
      

  7.   

    1、在数据集中静态增加一计算字段就可以了,然后在数据集的ONCalcFields事件中完成计算,也可以在SQL语句中完成
    2、如果要动态增加,建议使用CLIENTDATASET来完成,动态生成数据集