M
micro73
Unregistered / Unconfirmed
GUEST, unregistred user!
开发环境:前台win98+delphi6 update packet 2+ado, 后台win2k server + ms sql2000 server
在SQL上有两个存储过程(一个Copy一批记录,一个只Copy一条记录,参数相同且对同一表进行操作),
我在中间层放置了一个几个TADODataSet和一个TADOStoredProc,通过TADOConnection连结到后台,
然后在中间层建立了一个函数:
procedure TLargeData.CopyRecords(ProcName, mth1, mth2: OleVariant);safecall;
begin
with ADOStoredProc1 do
begin
ProcedureName:=ProcName;
Prepared:=True;
Parameters.ParamByName('@YearMonth1').Value:=mth1;
Parameters.ParamByName('@YearMonth2').Value:=mth2;
ExecProc;
end;
end;
我的目的是在客户端给该函数传递三个参数,根据需要调用不同的存储过程。现在的问题是:
1、如果我直接在TADOStoredProc中指定ProcedureName(即在上述函数中取消ProcedureName:=ProcName;),
我必须点击Parameters属性对话才可以正常使用,否则会出现:Parameters '@YearMonth1' no found
的错误提示。
2、如果我不在TADOStoredProc中指定ProcedureName(即在上述函数中指定),那么就会出现:
Parameters '@YearMonth1' not found的错误提示。
请问出现错误的原因是什么,如何解决。
在SQL上有两个存储过程(一个Copy一批记录,一个只Copy一条记录,参数相同且对同一表进行操作),
我在中间层放置了一个几个TADODataSet和一个TADOStoredProc,通过TADOConnection连结到后台,
然后在中间层建立了一个函数:
procedure TLargeData.CopyRecords(ProcName, mth1, mth2: OleVariant);safecall;
begin
with ADOStoredProc1 do
begin
ProcedureName:=ProcName;
Prepared:=True;
Parameters.ParamByName('@YearMonth1').Value:=mth1;
Parameters.ParamByName('@YearMonth2').Value:=mth2;
ExecProc;
end;
end;
我的目的是在客户端给该函数传递三个参数,根据需要调用不同的存储过程。现在的问题是:
1、如果我直接在TADOStoredProc中指定ProcedureName(即在上述函数中取消ProcedureName:=ProcName;),
我必须点击Parameters属性对话才可以正常使用,否则会出现:Parameters '@YearMonth1' no found
的错误提示。
2、如果我不在TADOStoredProc中指定ProcedureName(即在上述函数中指定),那么就会出现:
Parameters '@YearMonth1' not found的错误提示。
请问出现错误的原因是什么,如何解决。