因为在数据录入窗口是一个表格,一次可以录入很多各类数据,而且每一个数据都有自己相应的指标,为了算出相应的得分,我用存储过程来实现,但现在问题是若在表格中只输入一个数据时就可以实现,但输入多个就出错!请各位大哥帮忙看一下,我想就是存储过程循环的问题,但不知道怎么改:以下是源码:
     if lxmc = '四时类型' then
     begin
          for i := 0 to m-1 do //行循环
          begin
               for j := 0 to n-1 do //列循环
               if SG_sjz.Cells[j+2,i+1] <>'' then //判断数据不为空时进行以下操作
               begin
                    ph := strtoint(SG_sjz.Cells[0,i+1]); //赋值给变量
                    sj := strtofloat(SG_sjz.Cells[j+2,i+1]);
                    ADOSP_sjz.Close;  //存储过程开始
                    ADOSP_sjz.ProcedureName:='hyz_df';
                    ADOSP_sjz.Parameters.Clear;
                    ADOSP_sjz.Parameters.CreateParameter('@ph',ftinteger,pdinput,4,ph);
                    ADOSP_sjz.Parameters.CreateParameter('@sj',ftfloat,pdinput,8,sj);
                    ADOSP_sjz.Parameters.CreateParameter('@df', ftfloat, pdoutput,4,0);
                    ADOSP_sjz.Prepared := True;
                    ADOSP_sjz.ExecProc;
                    df := floattostr(ADOSP_sjz.Parameters.ParamByName('@df').Value);
                    ADOSP_sjz.Free;//存储过程结束,根据返回值一起录入数据库
                    ADOCM_sjz.CommandText := 'insert into ysjlrb(phid,sqz,sjdf,sbd,bb,sjd,rj,hyy) values('''+SG_sjz.Cells[0,i+1]+''','''+SG_sjz.Cells[j+2,i+1]+''','''+df+''','''+CBB_bd.text+''','''+CBB_bb.text+''','''+SG_sjz.Cells[j+2,0]+''','''+datetostr(DTP_sjz.date)+''','''+LB_hyy.Caption+''')';
                    ADOCM_sjz.Execute;
               end;
          end;
     end;