前台如下﹕
procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOStoredProc1.Close;
  ADOStoredProc1.Parameters[0].Value:=strtoint(edit1.Text);
  ADOStoredProc1.Prepared;
  ADOStoredProc1.ExecProc;
  edit2.Text:=inttostr(ADOStoredProc1.Parameters[1].Value);
end;
后台如下﹕
Create Procedure Example
(@a int,
@b int output)
as 
set @b=@a+23還請幫看一個

解决方案 »

  1.   

    估计是输入的问题吧,是不是edit1.text不是数字类型的呢
      

  2.   

    在adostorProc属性中将parametes打开下再关闭
      

  3.   

    Params[0]是存储过程返回的值,不能用做输入参数.存储过程的第一个参数存放在Params[1],
    Params[2].......中.所以写成如下:procedure TForm1.Button1Click(Sender: TObject);
    begin
      ADOStoredProc1.Close;
      ADOStoredProc1.Parameters[1].Value:=strtoint(edit1.Text);
      ADOStoredProc1.Prepared;
      ADOStoredProc1.ExecProc;
      edit2.Text:=inttostr(ADOStoredProc1.Parameters[2].Value);
    end;
      

  4.   

    上邊
    報的是一樣的錯誤
    list index out of bounds(1)﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖
      

  5.   

    你检查了adostorProc属性parametes,里面有参数才行,
    打开一下,导入参数,你试了吗?
      

  6.   

    自己看看:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ADOStoredProc1.Close;
      ADOStoredProc1.Parameters[1].Value:=strtoint(edit1.Text);  //改动
      ADOStoredProc1.Prepared;
      ADOStoredProc1.ExecProc;
      edit2.Text:=inttostr(ADOStoredProc1.Parameters[0].Value);  //改动
    end;
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ADOStoredProc1.Close;
      ADOStoredProc1.Refresh;
      ADOStoredProc1.Parameters[1].Value:=strtoint(edit1.Text);
      ADOStoredProc1.Prepared;
      ADOStoredProc1.ExecProc;
      edit2.Text:=inttostr(ADOStoredProc1.Parameters[1].Value);
    end;
    试试看
      

  8.   

    不好意思,
    ADOStoredProc1.Refresh;应该为ADOStoredProc1.Parameters.Refresh;