在datamodule中:
计算扣税金的过程
------------
procedure TSSDM.KouShuiJin;
var
  calcSJ : Currency;
  up1,up2,up3,sub1,sub2,sub3,sub4:Currency;
  rat1,rat2,rat3,rat4 : Single;
begin
  // get upperlimit(下限) 从表中取得某个网格的值
    qryTax.SQL.Clear ;
    qryTax.SQL.Add('select UpperLimit from TABLE_TAX where Rank=1');
    up1 := qryTax.FieldByName('UpperLimit').AsCurrency ;
    qryTax.SQL.Clear ;
    qryTax.SQL.Add('select UpperLimit from TABLE_TAX where Rank=2');
    up2 := qryTax.FieldByName('UpperLimit').AsCurrency ;
    ...
   //get rate(税率)
    qryTax.SQL.Clear ;
    qryTax.SQL.Add('select Rate from TABLE_TAX where Rank=1');
    rat1 := qryTax.FieldByName('Rate').AsFloat  ;
    qryTax.SQL.Clear ;
    qryTax.SQL.Add('select Rate from TABLE_TAX where Rank=2');
    rat2 := qryTax.FieldByName('Rate').AsFloat  ;
    ...
   //计算税金的范围    ,tblZZKSJ 是税金计算字段
    if calcSJ<=up1 then
      tblZZKSJ.Value := calcSJ*rat1-sub1
    else if calcSJ<=up2 then
      tblZZKSJ.Value := calcSJ*rat2-sub2
    else if calcSJ<=up3 then
      tblZZKSJ.Value := calcSJ*rat3-sub3
    else
      tblZZKSJ.Value := calcSJ*rat4-sub4;
end;
----------------------------------------
然后在dm中的calcFields过程中调用此过程
KouShuiJin;
tblZZSFJE.Value := tblZZYFJE.Value-tblZZKCJE.Value-tblZZKSJ.Value ;//实发金额= 应发金额-扣除金额-税金
--------------
但运行程序后表中显示税金为0,说明koushuijin过程中的变量没有得到值。
是不是因为跳出单元后变量生命结束?
请问如何解决?