读书人

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

发布时间: 2012-02-25 10:01:47 作者: rapoo

采用存储过程上传的问题
我们公司开发了一套考试软件, 通过存储过程上传成绩.
目前成绩可以上传, 但总是把最先约考的成绩覆盖(约考时间是原来的),造成调用该成绩时找不到相应的记录.目前其他公司做的软件并没有出现这种问题,应该不会是存储过程和成绩调用的问题.上传过程如下请大家帮我看看.
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语句更好些。

读书人网 >.NET

热点推荐