比如说我想实现以下功能
数据库有3个字段,都是数值型的,分别为field1,field2,field3
我想在DBGrid里面显示出来,同时当某一行中field1或者field2中某个数值改变时,field3自动改变,数值为field1+field2。
请问怎样实现,谢谢!回复人: hch_45(んこん) ( ) 信誉:105  2003-06-06 23:02:00  得分:0 
 
 
  用计算字段...
  
回复人: csdmzw(伟) ( ) 信誉:100  2003-06-06 23:24:00  得分:0 
 
 
  caculate字段,
dataset控件有一事件 OnCalcFields()
在其中写上字段关系计算即可
 
 
写的具体些好吗?和前面的一块给分,不够在加

解决方案 »

  1.   

    可以这样解决。
    在datasource 的 onChange事件中,
    写入以下代码://dataset是你的数据集比如说query,table或dataset控件,已经打开if dataset.state in [dsBrowse]then
      dataset.edit;
    dataset.fieldbyname('field3').asinteger:=dataset.fieldbyname('field1')+('field2');
    dataset.Post; 
      

  2.   

    dbgrid1.datasource.dataset.FieldByName('field1).OnChange:=aaChang;
        dbgrid1.datasource.dataset.FieldByName('filed2').OnChange:=aaChang;procedure aa(Sender: TField);
    begin
       sender.dataset.fieldbyname('field3').asfloat:=sender.dataset.fieldbyname('field1').asfloat+sender.dataset.fieldbyname('field2').asfloat;
    end;
      

  3.   

    计算字段  利用字段编辑器可以向一个数据集中加入计算字段。例如,需要加入一个计算ORDERS表中每一个条目批发总量的字段(已知批发量是总量的32%),其操作如下:在字段编辑器的弹出菜单中选择NewField命令,这时会出现一个New Field对话框.在Name框中输入新建字段名Wholesale-Total;由于这个字段的类型是Currency,所以在Type编辑框中输入Currency类型;在FieldType单选按钮组中选择Calculated;最后,单击OK按钮。这时,该计算字段就出现在了网格内,但是并没有数据生成。
    为了使新字段根据原有字段的取值得到计算结果值,必须处理Table1的OnCalcFields 事件。下面的代码只是把WholesaleTotal 的值设置为表中原有字段SalesTotal的值的32%。处理事件的代码如下:procedure TForm1.Table1CalcFields(DataSet: TDataSet);
    begin
     dataset[WholesaleTotal'] := dataset['SalesTotal']*0.68;
    end;
      

  4.   

    1;在Delphi里可以修改是順便把Field3修改:如
    procedure TADMSystem.QPubausersBeforePost(DataSet: TDataSet);
    begin
    field3:=Fields1+Fields2;
    end;2;在SQL里,你可寫公式,在定義資料庫是,在field3的公司項目輸入:
    Fields1+Fields2;Ok,一上僅僅是一個思路!
      

  5.   

    dataset.edit;
    wwdbgrid.ColumnByName('field3').asinteger:=ColumnByName('field1')
           +ColumnByName('field2');
    dataset.Post;