在数量字段输入值后,如何自动修改金额:=数量*单价?我的意思是在哪个事件里写?
我觉得应该在afterpost以后写但是不行:如下adoquery1.afterpost...
begin
    if dbgrideh1.selectfield.filename='数量' then
    begin
       with adoquery1 do
       begin
            edit;fieldvalues['金额']:=fieldvalues['数量']*fieldvalues['单价'];post;
            //感觉应该没问题,数量提交后,直接修改金额值,但是...,程序在这里出现了死循环,就死在这里了,怎么办?
       end;
    end;
end;

解决方案 »

  1.   

    我说的是直接在dbgrideh1中进行操作.并判断.
      

  2.   

    你在数据集的的onchange事件中
      AdoQuery1.FieldByName('金额').Value := AdoQuery1.FieldByName('数量').AsFloat*AdoQuery1.fieldByName('单价').AsFloat;
      

  3.   

    adoquery的字段的onchange中,也就是你的"数量"这个字段及"单价"上。
    选中adoquery右键->fileds editor->右键add fields->选中相关的字段在其onchange中写代码
      

  4.   

    Onchange 或者Onexit都可以吧,我用的是OnExit。Onchange会不会每输入一位数就触发一次?
      

  5.   

    使用计算事件方法:
    procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
    begin
      Dataset.fieldbyname('金额').asCurrency := DataSet.FieldByName('数量').AsInteger*DataSet.FieldByName('单价').AsCurrency;
    end;
      

  6.   

    不会如果是金额是计算字段 用 计算事件 否则用onchange
      

  7.   


    //在这里写吧,如果输入过程中有小数,如果用onChange会有问题
    procedure TForm1.DBEdit1Exit(Sender: TObject);
    begin
      Field[0].value := field[1].value * field[2].value
    end;