首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

采用存储过程上传的有关问题

2012-02-25 
采用存储过程上传的问题我们公司开发了一套考试软件,通过存储过程上传成绩.目前成绩可以上传,但总是把最先

采用存储过程上传的问题
我们公司开发了一套考试软件,   通过存储过程上传成绩.
    目前成绩可以上传,   但总是把最先约考的成绩覆盖(约考时间是原来的),造成调用该成绩时找不到相应的记录.目前其他公司做的软件并没有出现这种问题,应该不会是存储过程和成绩调用的问题.上传过程如下请大家帮我看看.
procedure   Tksform.scTimeTimer(Sender:   TObject);
var   sch   :   integer;
    Mzt,hres,herr,scMlsh,mems:string;
begin
sch:=5;     //-----------------------------------------------------
with   qryshanchuan   do
begin
  sctime.Enabled:=false;
  close;
  sql.Clear;
  sql.add( 'select   lsh,zkzmbh,sfzmhm,xm,riqi,kscx,kscj,kscs,ksy1,ksy2,jbr,fherr,fhres,shangch   from   ksxx   where   shangch= ' ' '+inttostr(sch)+ ' ' ' ');
  open;
  first;
  while   not   eof   do
  begin
  mems:= ' ';
      if   (fieldbyname( 'kscs ').AsInteger   mod   2)=1   then
          begin
            if     fieldbyname( 'kscj ').AsInteger <90   then   Mzt:= '2 '   else
                  if   fieldbyname( 'kscj ').AsInteger> =90   then   mzt:= '1 ';
          end
        else
        if   (fieldbyname( 'kscs ').AsInteger   mod   2)=0   then
            begin
            if     fieldbyname( 'kscj ').AsInteger <90   then   Mzt:= '0 '   else
                  if   fieldbyname( 'kscj ').AsInteger> =90   then   mzt:= '1 ';
            end;
      scmlsh:=fieldbyname( 'lsh ').asstring;
      storedproc1.ParamByName( 'v_lsh ').AsString:=trim(fieldbyname( 'lsh ').asstring);
      storedproc1.ParamByName( 'v_sfzmhm ').AsString:=trim(fieldbyname( 'sfzmhm ').asstring);
      storedproc1.ParamByName( 'v_kscx ').AsString:=trim(fieldbyname( 'kscx ').asstring);;
      storedproc1.ParamByName( 'v_ksrq ').asdatetime:=fieldbyname( 'riqi ').AsDateTime;
      storedproc1.ParamByName( 'v_kscj ').AsInteger:=fieldbyname( 'kscj ').AsInteger;
      storedproc1.ParamByName( 'v_kscs ').AsInteger:=fieldbyname( 'kscs ').AsInteger;
      storedproc1.ParamByName( 'v_ksy1 ').asstring:=trim(fieldbyname( 'ksy1 ').asstring);
      storedproc1.ParamByName( 'v_ksy2 ').AsString:=trim(fieldbyname( 'ksy2 ').asstring);
      storedproc1.ParamByName( 'v_jbr ').AsString:=trim(fieldbyname( 'jbr ').AsString);
      storedproc1.ParamByName( 'v_zt ').AsString:=trim(Mzt);                       //fieldbyname(zt).AsString;
      storedproc1.ExecProc;
      hres:=inttostr(storedproc1.parambyname( 'v_res ').Asinteger);
      herr:=storedproc1.parambyname( 'v_err ').asstring;
      mems:=mems+scmlsh+ '     '+trim(fieldbyname( 'sfzmhm ').asstring)+ '   '+trim(fieldbyname( 'xm ').asstring)+ '     '+herr;


      with   datamodule1.ADOQrysc   do
            begin
              close;
              sql.Clear;
              sql.Add( 'update   ksxx   set   shangch=6,fhres= '+hres+ ',fherr= ' ' '+herr+ ' ' '   where   lsh= ' ' '+scmlsh+ ' ' ' ');
              execsql;
              close;
            end;
        memo2.Lines.Add(mems);    
      next;
end;


  sctime.Enabled:=true;

end;


[解决办法]
根本用不着存储过程。用Insert语句更好些。

热点排行