表有3个属性:价格,数量,总额。
在DBGridEh显示出来,但只要求给用户修改价格和数量,系统就可以得到总额并更新。
请问改怎么实现?请指点,谢谢!

解决方案 »

  1.   

    在价格,数量兩個字段的OnSetText寫代碼:
    var
      lInput: string;
    begin
      lInput := Text;
      if lInput = '' then lInput := '0';
      Sender.AsString := lInput;
      Sender.DataSet.FieldByName('總額').AsFloat
        := Sender.DataSet.FieldByName('數量').AsFloat
        * Sender.DataSet.FieldByName('价格').AsFloat;可以共用OnSetText事件
      

  2.   

    如果是sql server数据库,可以建一个触发器进行计算!
    也可以在sql语句中进行计算
      

  3.   

    procedure TForm1.ADOQuery1cccChange(Sender: TField); //价格、数量共用
    begin
      Sender.DataSet.FieldByName('总额').AsFloat :=
        Sender.DataSet.FieldByName('价格').AsFloat +
        Sender.DataSet.FieldByName('数量').AsFloat;
    end;或
    procedure TForm1.ADOQuery1cccValidate(Sender: TField);  //价格、数量共用
    begin
      Sender.DataSet.FieldByName('总额').AsFloat :=
        Sender.DataSet.FieldByName('价格').AsFloat +
        Sender.DataSet.FieldByName('数量').AsFloat;
    end;
      

  4.   

    建议去掉金额字段以便于更新数据,但现在的话,可以数据库里回触发器,可可在在onpost时写FieldByName('总额').AsFloat :=FieldByName('价格').asfloat*FieldByName('数量').asfloat;