TDBedit组件:dbedit1;数量 dbedit2;单价 dbedit3;总额
是从ADOTable1的字段编辑器拉下来生成的,
现在想让dbedit3的值为dbedit1和dbedit2的值的相乘结果。
我用dbedti3.text:=floattostr(strtoint(dbedit1.text)*strtofloat(dbedit2.text))不行。
还用过其他一些方法。
请问该如何实现?

解决方案 »

  1.   

    应该是这样:
    在AdoTable的BeforPost里面写代码,如下:
    procedure TForm1.ADOTable1BeforePost(DataSet: TDataSet);
    begin
      if (Trim(DataSet.FieldByName('数量').AsString) <> '') and
        (Trim(DataSet.FieldByName('单价').AsString) <> '') then  
        DataSet.FieldByName('总额').AsFloat :=
          DataSet.FieldByName('数量').AsFloat * 
          DataSet.FieldByName('单价').AsFloat    
    end;
      

  2.   

    我希望在dbedit3的控件中显示出来给别人看。
    有没有其他办法呢?
      

  3.   

    即是当我在dbedit1中输入数量,dbedit2中输入单价,dbedit3中就可以
    显示出总额来。
      

  4.   

    在adotable1的静态字段中 数量,单价字段的onchange事件里写
    with Sender.DataSet do
      begin
        Edit;
        {  金额 }
        FieldByName('jine').Value := FieldByName('danj').AsFloat * FieldByName('shul').AsFloat ;
      end;
      

  5.   

    可以在adotable里加个新字段sum是calculated类型!
    在adotable的ONcalcfields事件里写
    dataset['sum'] := dataset['price'] *dataset['amount'];
    然后把sum字段连到dbedit3上就可以了
      

  6.   

    最好不要采用计算字段,因为当打开的记录一多的时候,速度很慢。另外
    我希望在dbedit3的控件中显示出来给别人看。
    有没有其他办法呢?DbEdit3显示的当然是当前这个字段的值,当这个字段有值的时候,就会显示/
      

  7.   

    你写个TRIGGER,每次有新数据插入就自动计算,从ADOTable1取出来都是编辑好的.
    这个TRIGGER还是很简单的.