with  ADOQuery2 do
   begin
       FieldByName('je').Value:=strtofloat(formatfloat('0.##',FieldByName('sl').Value*FieldByName('dj').Value));
       dd:=FieldByName('zk').Value;
       FieldByName('zkdj').Value:=strtofloat(formatfloat(SYS_DJXS_FORMAT,dd*FieldByName('dj').Value));
       FieldByName('zkje').Value:=strtofloat(formatfloat('0.##',FieldByName('sl').Value*FieldByName('zkdj').Value));
       FieldByName('sj').Value:=strtofloat(formatfloat('0.##',(FieldByName('sll').Value/100)*FieldByName('zkje').Value));
       FieldByName('hsje').Value:=FieldByName('sj').Value+FieldByName('zkje').Value;
       dd:=FieldByName('sll').Value;
       FieldByName('hsdj').Value:=strtofloat(formatfloat(SYS_DJXS_FORMAT,(dd/100)*FieldByName('zkdj').Value))+FieldByName('zkdj').Value;
   end;这是先输单价产生金额的源码,如果是先输金额再产生单价的话需不需要数据库中设置一个字段告诉程序是哪种输入方式,或者怎样设计比较合理

解决方案 »

  1.   

    如果你的總價不是計算字段,那應該是在二個字段的ONCHAINGE事件裏做了處理。
      

  2.   


    我用的dbgrideh,没有onchange事件呀我在dbgridheh1.columns[12]的onupdatedata事件中处理
       if text='' then  text:='0';
       if ADOQuery2.FieldByName('spbm').Value='' then
         begin
            text:='0';
            exit;
         end
       else
         begin
            text:=formatfloat('0.######',strtofloat(text)) ;
            ADOQuery2.FieldByName('dj').Value:=text;
            re_calc;(这里就是上述的代码)
         end;
      

  3.   


    不是GRID的問題,而是數據集的字段的ONCHANGE裏處理的。 就像的ADOQUERY2
      

  4.   

    我用的是adoquery2 datasouce2
    是datasouce2的ondatachange事件吗
    adoquery2没有ONCHANGE事件