gstype_str:=fieldvalues['gstype'];     //gstype_str公式类型字符.
          idx_str:=fieldvalues['idx'];           //idx_str公式序号字符.
          gsx_str:=fieldvalues['gsx'];           //gsx_str公式项字符.
          flag:=pos('+',gsx_str);               //flag标记'+'号的位置.
          ct:=0;                                //ct公式各记算结果.
          while flag>0 do
            begin
               gsx_left:=copy(gsx_str,1,flag-1);      //gsx_left是公式的一个项.
               rst:=getgsxvalue(gsx_left,trim(e_xqh.text));   //rst公式项的一个值.
               showmessage('公式项为:'+GSX_left);
               showmessage('公式项值为:'+inttostr(rst));
               ct:=ct+rst;                    //getgsxvalue(var:string:string):integer是取得公式项值的函数.
               gsx_str:=copy(gsx_str,flag+1,length(gsx_str));
               flag:=pos('+',gsx_str);
            end;
            if flag=0 then
               begin
                 if length(gsx_str)<3 then
                    rst:=strtoint(gsx_str)       //rst公式项的一个值.
                 else
                    rst:=getgsxvalue(gsx_str,trim(e_xqh.text));
                 ct:=ct+rst;
               end;            
            with adoq1 do
              begin
        // active:=true;
             sql.clear;                             //getgsjg(var:int,:string):string;取得公式结果.
             sql.add('update gsjg set gs'+idx_str+'='''+getgsjg(ct,gstype_str)+''' where xqqh='+trim(e_xqh.text));
            execsql;
            close;
           end;
   next;
        end;
    end;
这段代码主要完成取数和算出结果的功能,有时候能够算七八条公式,有的时候只能算一二条公式(公式是一样的),就会出现错误提示:未指定的错误.