一个简单的问题

hellotao 2002-06-04 10:36:34
我在运行storedproc 过程中

AdoStoredProc.Close;
AdoStoredProc.Parameters.ParamByName('@Stock_ID').Value := Trim(EditStockCode.Text);
AdoStoredProc.Parameters.ParamByName('@Start_Time').Value := Trim(EditStartTime.Text);
AdoStoredProc.Parameters.ParamByName('@H0').Value := Trim(EditHSCount.Text);

到第二条语句的时候就抱@STock_id 参数不存在
可是确实有啊
...全文
26 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
netlib 2002-06-04
  • 打赏
  • 举报
回复
把@都取了
AdoStoredProc.Close;
AdoStoredProc.Parameters.ParamByName('Stock_ID').Value := Trim(EditStockCode.Text);
AdoStoredProc.Parameters.ParamByName('Start_Time').Value := Trim(EditStartTime.Text);
AdoStoredProc.Parameters.ParamByName('H0').Value := Trim(EditHSCount.Text);
MSHawk 2002-06-04
  • 打赏
  • 举报
回复
就你自己这个吧。再设计时候应当指明与这个存储过程组件联系的存储过程,这个时候会自动查询参数;如果使在运行时刻指定的话,要手动加入参数,如下:

AdoStoredProc.Close;
f := TParam.Create(SQLStoredProc1.Params, ptUnknown);
f.Name := '@Stock_ID';
AdoStoredProc.Params.AddParam(f);
......
然后你才可以像你前面那样编码
BES 2002-06-04
  • 打赏
  • 举报
回复
參數定義:
var
E_Single_No,E_Cust_No,E_Code_No:string;
E_Succ:Integer;
BES 2002-06-04
  • 打赏
  • 举报
回复
使用如下格式保証不會出錯:
with AdoStoredProc do
Parameters.Params[1].AsString := Trim(EditStockCode.Text);
例(我自己用的代碼):
With StoredProc2 do
begin
Params[1].AsString := E_Single_No;
Params[2].AsString := E_Cust_No;
Params[3].AsString := E_Code_No;
Prepare;
ExecProc;
E_Succ := Params[4].AsInteger;
end;
if E_Succ=5 then
begin
.....
end;
hellotao 2002-06-04
  • 打赏
  • 举报
回复
给个简单的例子吧。
MSHawk 2002-06-04
  • 打赏
  • 举报
回复
首先StoreProc1.Params.AddParam(
然后你才可以存取参数
hellotao 2002-06-04
  • 打赏
  • 举报
回复
去掉也会报stock_id 不存在的。

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧