环境为 delphi6+sql 2005
在数据库里面有3列数据 具体为 quantity decimal(18,0),unitprice decimal(18,2),amount decimal(18,2)现在通过adoquery连接数据库在cxgrid中显示这3列数据问题:现在我想控制在cxgrid中输入quantity 的时候能否只能输入整形数据,unitprice 的时候输入的数据只能为小数点最多2位。我在quantity 的onchange时间中设置了
  InvQty:=QryInvList.fieldbyname('quantity').AsInteger;
  InvPri:=StrToFloat(formatfloat('0.00',QryInvList.fieldbyname('unitprice').AsFloat));
  QryInvList.FieldByName('amount').AsFloat:=InvQty*InvPri;
如果这样处理的话会出现这样一种情况:当我quantity 列输入 1.5 ,unitprice 列输入2 则 amount 列会计算为 4  但是quantity 列显示为1 unitprice 列显示 2 amount 显示为4 保存进数据库里面的话 quantity 显示为1 unitprice 为2 amount 为 4
请教高手我该如何处理这种问题。

解决方案 »

  1.   

      var
        InvQty,InvPri:Float;   ..........
      InvQty:=QryInvList.fieldbyname('quantity').AsFloat;
      InvPri:=QryInvList.fieldbyname('unitprice').AsFloat;
      QryInvList.FieldByName('amount').value:=InvQty*InvPri;  
    直接这样呢?? 
      

  2.   

    楼上的不行,或许我的问题可以理解为怎么样获取我在cxgrid中输入的值