我用sql2000定义了一个带参数的存储过程用delphi的ado的存储过程控件运行是说找不着参数(注:用parameters给参数赋值时,说找不着该参数)

解决方案 »

  1.   

    一是在设计时将prepared设置为true试试.
    2 是在运行时创建参数!!!
      

  2.   

    数据连接(ADOConnected)成功了吗?先打开连接,再设置参数
      

  3.   

    in_out:='1' else in_out:=trim(datamodule2.spyf.Fields[1].AsString);
         //执行存储过程
         fillgrid.Close;
         fillgrid.SQL.Clear;                     //机型专用号                        零部件专用号   机型名称                           单台用量                                           消耗定额                    层                       父项专用号                   平台                       废品系数                                     是否库存                                    备注
         fillgrid.SQL.Add('EXECUTE yf_save '''+trim(dbedit1.Text)+''''+','+''''+trim(spyf.fields[3].asstring)+''''+','+''''+trim(spyf.Fields[7].asstring)+''''+','+''''+trim(spyf.Fields[9].asstring)+''''+','+''''+in_out+''''+','+''''+trim(spyf.Fields[1].asstring)+''''+','+''''''+','+''''+trim(spyf.Fields[11].asstring)+''''+','+''''+trim(spyf.Fields[12].asstring)+''''+','+''''+trim(spyf.Fields[13].asstring)+'''');
         fillgrid.ExecSQL;
      

  4.   

    代码为:
    var
        mypara:TParameter;
    begin
        ADOStoredProc1.close;
        mypara:= ADOStoredProc1.Parameters.ParamByName('@starttime');
        mypara.Direction :=pdInput;
        mypara.DataType := ftDateTime;
        mypara.Value :=strtoDatetime(BeginDate);
        ADOStoredProc1.Open ;end;
      

  5.   

    确认存储过程有参数,参数名是否正确,可先在设计模式下打开PARAMETERS属性看一下,能看到参数否?
      

  6.   

    在用sp_password这个存储过程的时候,不论是在设计时添加参数还是在运行时添加参数,都会提示'需要@new参数但该参数没有提供',运行时代码如下:
      with ADOStoreProc1.parameters.addparameters do
        begin
          datatype:=ftstring;
          name:='@new';
          value:=edit1.text;
        end;
      adostoreproc1.procedurename:='sp_password';
      adostoreproc1.execproc;
    设计时打开parameters编辑框,在里面增加参数,填写上面的内容,运行的结果都是找不到参数,perpare属性已经设置为true;
    希望能得到解答
      

  7.   

    怎么是:设计时打开parameters编辑框,在里面增加参数,填写上面的内容?
    只要你设置好ADOCONNCTION连接且CONNECTED属性设为TRUE,ADOprocedure的CONNECTION属性设置为ADOCONNCTION,然后选定相应的存储过程,打开parameters编辑框就可以看到参数了啊,还要你添加么?如看不到,连接有问题。
      

  8.   

    如果执行存储过程用的是TADOStoredProc,
    打开TADOStoredProc的parameters编辑框可以看到参数,
    设置参数的Datatype 和 size与表结构相同
      

  9.   

    怪了,把mypara:= ADOStoredProc1.Parameters.ParamByName('@starttime');
    改成mypara:= ADOStoredProc1.Parameters[0];试一下