数量单价金额计算问题(一直困扰着)
数据库中 有三字段。
描述:数量,单价,金额。都可以录入。
使用cxgrid与adoquery
要求:输入数量单价,自动计算金额
输入金额,自动计算单价。
目前方式:增加计算字段 clacmoney :=amount*price
在change事件中 money:=clacmoney;
求助如何处理:输入完成后,单价也可以计算出
procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
var
n1,n2,n3:real;
begin
n1:= adoquery1.FieldValues['amount'];
n2:= adoquery1.FieldValues['price'];
n3:= adoquery1.FieldValues['money'];
adoquery1.FieldValues['clacmoney']:=roundto(n1*n2,-2);
if n1<>0 then
adoquery1.FieldValues['clacprice']:=roundto(n3/n1,-6);
end;
procedure TForm1.ADOQuery1amountChange(Sender: TField);
begin
adoquery1.FieldValues['money'] := adoquery1.FieldValues['clacmoney'];
end;
procedure TForm1.ADOQuery1priceChange(Sender: TField);
begin
adoquery1.FieldValues['money'] := adoquery1.FieldValues['clacmoney'];
end;
[解决办法]
一般都在集的BeforePost事件中理此算,在中有相字段,必要再加算字段。
[解决办法]
先进行判断 再计算 如果相等不用计算了
如在输入金额后的触发事件 先判断单价是不是等于 金额÷数量 再进行计算
在输入单价后的触发事件 先判断金额是不是等于 单价×数量 再进行计算