Delphi不是有计算字段吗?设置一个计算字段,然后再Dataset的OnCalFields事件中写计算公式。

解决方案 »

  1.   

    DataSet['ZheHouJiaGe'] := DataSet['YuanJia'] * Dataset['DaZheLv'];
      

  2.   

    我的意思是:
      在选取折扣率(用下拉选取,也在dbgrid中)后,当前记录的"打折后的价格"才计算出来,不是整个DBGrid的"打折后的价格"都计算,明白我的意思吗?
      

  3.   

    那么你做一个if...else判断不就行了。如果折扣率没有选取(应该为空是吧?)就不计算,否则计算。
      

  4.   

    用代码实现,选取了折扣率后,直接写:
    Query1.Edit;
    Query1.FieldByName('Price').AsFloat:=Quey1.FieldByName('Price').AsFloat*Query1.FieldByName('折扣').AsFloat;
      

  5.   

    To jabmoon:
       这段代码放在哪个地方?会只对当前选取的记录起作用吧,不会也把下面或上面的记录进行计算吧?
      

  6.   

    在OnCalFields事件中的代码被执行的频度很高,而且不用写Edit之类的语句。
      

  7.   

    打開DataSet的Fields Editor,加入3個DataField:Name(商品名稱),Yuanjia(原價),ZheLv(折率),在加入一個CalField:Zhehoujia(折後價).1.DBGrid 中下拉選取的實現:
    打開Editor DBGrid.Columns加入4列:Name(商品名稱),Yuanjia(原價),ZheLv(折率),Zhehoujia(折後價).選擇ZheLv編輯其PickList屬性.2.然后再Dataset的OnCalFields事件中写计算公式。
    procedure TForm1.Query1CalFields(Sender:TObject);
    begin
      Query1Zhehoujia.Value:=Query1Yuanjia.Value*Query1ZheLv.Value;
    end;