学习了,以前没遇到。在数据集里新建一个计算字段(金额),然后在数据集的OnCalcFields事件里计算金额procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);begin DataSet.FieldByName('Amount').AsFloat:= DataSet.FieldByName('Qty').AsFloat*DataSet.FieldByName('Price').AsFloat;end; Field 的 ONVILIDATA 事件中加入代码 DataSet.FieldByName('Amount').AsFloat:= DataSet.FieldByName('Qty').AsFloat*DataSet.FieldByName('Price').AsFloat; 在字段的OnChange事件中写上例如:procedure TForm1.ClientDataSet1QtyChange(Sender: TField);begintry Sender.OnChange = nil; //这里就是你要写的代码finally Sender.OnChange = ClientDataSet1QtyChange;end;end;这个方法我不赞成,我认为不妥(好慢,好烦哦):这个有很多方法,在数据与单价改变事件上实现,也可在SQL语种上实现,也可在触发器上实现,