我今天遇到过这样的问题,代码如下:
if trim(kh)='要'then //如果要考核则调用存储过程计算得分
begin
with YS_adosp do
begin
Close;
ProcedureName:='hyz_df';
Parameters.Clear;
Parameters.CreateParameter('@j',ftinteger,pdinput,4,j);
Parameters.CreateParameter('@sj',ftfloat,pdinput,8,sj);
Parameters.CreateParameter('@df', ftfloat, pdoutput,4,0);
Parameters.CreateParameter('@hg',ftinteger,pdoutput,4,0);
Prepared := True;
ExecProc;
df := formatfloat('0.00',Parameters.ParamByName('@df').Value);
hg := inttostr(Parameters.ParamByName('@hg').Value);
end;
end;
以上代码是能够正确实行,但是若把 with YS_adosp do
这个放到IF的下面,如:
if trim(kh)='要'then //如果要考核则调用存储过程计算得分
with YS_adosp do
begin
Close;
ProcedureName:='hyz_df';
Parameters.Clear;
Parameters.CreateParameter('@j',ftinteger,pdinput,4,j);
Parameters.CreateParameter('@sj',ftfloat,pdinput,8,sj);
Parameters.CreateParameter('@df', ftfloat, pdoutput,4,0);
Parameters.CreateParameter('@hg',ftinteger,pdoutput,4,0);
Prepared := True;
ExecProc;
df := formatfloat('0.00',Parameters.ParamByName('@df').Value);
hg := inttostr(Parameters.ParamByName('@hg').Value);
end;
就会老是提示@SJ类型错误,这点我也说不清是为什么?