我用SQLSTOREDPROC,PARAMS设了两个,都是输入的.但是为什么我在运行时出现了"list index out of bounds (0)"这样的错误呢?谢谢!

解决方案 »

  1.   

    老兄:
    这样写
      Sp.ParamCheck:=true; 
      SP.StoredProcName:=ProName;
    可行的
      

  2.   

    paramcheck是为TRUE,还是出现上面的错误.
      

  3.   

    如果用SqlServer默认的第一个参数为@RETURN_VALUE,所以最好采用名字的方式
    SQLStoredProc1.ParamByName('@parmname1').AsString :='XXXX';
    SQLStoredProc1.ParamByName('@parmname2').AsString :='XXXX';
    SQLStoredProc1.ParamByName('@parmname3').AsString :='XXXX';
      

  4.   

    另外你可以看看Params的属性中的参数顺序,确认是否参数正确,第一个参数为
    SQLStoredProc1.Params[0].Value
    注意严格按照顺序,不过你可以调整顺序
      

  5.   

    谢谢 ...    hhytsoft(雨中独行) :
    1.我用SQLStoredProc1.ParamByName('@parmname1').AsString :='XXXX';方式写,提示"SQLSTOREPROC1:PARAMETER '@PARMNAME1' NOT FOUND'2.按你下面所说的用PARAMS[0].VALUE也还是出现上面的错误.
      

  6.   

    应该不会呀,我刚才又试了以下,应该没有问题呀。是不是你
    @PARMNAME1 :是指你的参数的名字,我只是举个例子,你可以从param属性中拷贝出参数的名字,不过在名字前要有@。再试试。
      

  7.   

    另外还有个问题,如果你不是用的SQLServer,可能你选择了存储过程后,系统并没有自动的给你生成参数表,也就是Param属性中没有值,那你就需要手工添加参数,特别要注意的是参数的类型paramtype,和数据类型datatype.
    现在想可能问题就在这里.我一直在线,由问题给我发消息。
      

  8.   

    我的代码如下:sqlstoredproc2.storedprocname:='cr';
    sqlstoredproc2.execproc;
    label1.caption:=inttostr(sqlstoredproc2.params.paramvalues['recordcounts']);
    //我是用存储过程统计表中的记录,可是不行啊.
    我在SQLSTOREDPROC2中新建一个PARAM,

    DATATYPE设为"ftinteger',
    name为recordcounts,
    paramtype为ptOutput