在数据集中可以实现这样的计算方式吗?(200)

  • 主题发起人 主题发起人 DelphiDeveloper
  • 开始时间 开始时间
D

DelphiDeveloper

Unregistered / Unconfirmed
GUEST, unregistred user!
在TDataSet中有三个字段,分别为数量,单价金额,是否可以实现数量,单价变动计算金额 ,而金额变动则自动算数量?
 
可以啊···这么简单的东西··在字段的OnChange事件中写上例如:procedure TForm1.ClientDataSet1QtyChange(Sender: TField);begintry Sender.OnChange = nil; //这里就是你要写的代码finally Sender.OnChange = ClientDataSet1QtyChange;end;end;
 
在数据集里新建一个计算字段(金额),然后在数据集的OnCalcFields事件里计算金额procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);begin DataSet.FieldByName('Amount').AsFloat:= DataSet.FieldByName('Qty').AsFloat*DataSet.FieldByName('Price').AsFloat;end;
 
这个有很多方法,在数据与单价改变事件上实现,也可在SQL语种上实现,也可在触发器上实现,
 
楼上用计算字段是正解。
 
Field 的 ONVILIDATA 事件中加入代码 DataSet.FieldByName('Amount').AsFloat:= DataSet.FieldByName('Qty').AsFloat*DataSet.FieldByName('Price').AsFloat;
 
方法很多。。。
 
学习了,以前没遇到。在数据集里新建一个计算字段(金额),然后在数据集的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语种上实现,也可在触发器上实现,
 
后退
顶部