各位
  代碼以下:   ADOStoredProc1.Connection:=dm.ADOConnection1;
  ADOStoredProc1.ProcedureName :='jdcgetmax';  with ADOStoredProc1 do
  begin
    Prepared;
   Parameters.ParamByName('aaa').Value := str_last_date;
   parameters.ParamByName('bbb').Value := str_curr_date;
   parameters.ParamByName('ccc').Value :=Edit1.Text;
   ExecProc;
  end;說明
   1,jdcgetmax 為sql server 中的存儲過程
   2, 已在IDE 裡設定好了ADOStoredProc1三個參數:aaa,bbb,cc運行時錯誤:
   ADOStoredProc1:Parametar 'aaa' not found為什麼呢?

解决方案 »

  1.   

    有没有在Parametars属性下加入这几个参数?
      

  2.   

    已Parametars 屬性下加了參數
      

  3.   

    是不是存储过程中参数定义的和程序里的这个“aaa”不太一样?
      

  4.   

    2, 已在IDE 裡設定好了ADOStoredProc1三個參數:aaa,bbb,cc
    ----------------
    不用在IDE加这3个参数
    还有参数赋值前先刷新下    
    楼主的问题不懂
      

  5.   


      ADOStoredProc1.Connection:=dm.ADOConnection1;
      ADOStoredProc1.ProcedureName :='jdcgetmax';  with ADOStoredProc1 do
      begin
        parameters.refresh;//加这句
       Parameters.ParamByName('aaa').Value := str_last_date;
       parameters.ParamByName('bbb').Value := str_curr_date;
       parameters.ParamByName('ccc').Value :=Edit1.Text;
       ExecProc;
      end;
      

  6.   

    好象刻要用 Parameters.add 方法加参数
      

  7.   

    刚刚打错字了。不好意思。
    好象记得要用 Parameters.add 方法加参数
      

  8.   

    你重新添加ADOStoredProc1 看看
      

  9.   

    ADOStoredProc1.ProcedureName 过程名手动选择.参数自动会加入,不用人工定义,再给参数赋值就行了
      

  10.   

    我是用程序加的参数IDE里面设置的好像么用处
      

  11.   

    不需要刷新吧。
    直接在数据模块里指定ADOStoredProc1的Connection和ProcedureName,
    参数自动会出现啊。
    然后直接调用不就行了?
      with ADOStoredProc1 do
      begin
       Parameters.ParamByName('aaa').Value := str_last_date;
       parameters.ParamByName('bbb').Value := str_curr_date;
       parameters.ParamByName('ccc').Value :=Edit1.Text;
       ExecProc;
      end;
      

  12.   

    原因已查明,可能是delphi 的bug  處理方法:
        1,把ADOStoredProc1刪了,再新加一個
        2,設定屬性 ProcedureName ='jdcgetmax' (在IDE裡)
        
      再運行就好了謝謝各位
      

  13.   

    问题解决了,原来我没有ADOStoredProc1.Parameters.AddParameter.Name:='@server';。