在数量字段输入值后,如何自动修改金额:=数量*单价?我的意思是在哪个事件里写?
我觉得应该在afterpost以后写但是不行:如下adoquery1.afterpost...
begin
if dbgrideh1.selectfield.filename='数量' then
begin
with adoquery1 do
begin
edit;fieldvalues['金额']:=fieldvalues['数量']*fieldvalues['单价'];post;
//感觉应该没问题,数量提交后,直接修改金额值,但是...,程序在这里出现了死循环,就死在这里了,怎么办?
end;
end;
end;
我觉得应该在afterpost以后写但是不行:如下adoquery1.afterpost...
begin
if dbgrideh1.selectfield.filename='数量' then
begin
with adoquery1 do
begin
edit;fieldvalues['金额']:=fieldvalues['数量']*fieldvalues['单价'];post;
//感觉应该没问题,数量提交后,直接修改金额值,但是...,程序在这里出现了死循环,就死在这里了,怎么办?
end;
end;
end;
AdoQuery1.FieldByName('金额').Value := AdoQuery1.FieldByName('数量').AsFloat*AdoQuery1.fieldByName('单价').AsFloat;
选中adoquery右键->fileds editor->右键add fields->选中相关的字段在其onchange中写代码
procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
begin
Dataset.fieldbyname('金额').asCurrency := DataSet.FieldByName('数量').AsInteger*DataSet.FieldByName('单价').AsCurrency;
end;
//在这里写吧,如果输入过程中有小数,如果用onChange会有问题
procedure TForm1.DBEdit1Exit(Sender: TObject);
begin
Field[0].value := field[1].value * field[2].value
end;