用SQL的update更新一个表时,提示“list index out of bounds(0)”错误,
SQL语句为:
With ADOQuery1 do
 begin
 Close ;
  SQL.Clear ;
  SQL.Add('update detail set rkf=:yrk') ;
  Parameters[0].Value:='是';
  ExecSQL ;
 end;

解决方案 »

  1.   

    超出范围错误,你直接写成:
    SQL :='update detail set rkf='''+yrk+''';
    不绑定,试试看。
      

  2.   

    With ADOQuery1 do
     begin
     Close ;
      SQL.Clear ;
      SQL.Add('update detail set rkf=:yrk') ;
      Parameters.ParamByName('yrk').Value:='是';
      ExecSQL ;
     end;
      

  3.   

    回Drate
      调试出现“parameter 'yrk' not found”错误
       谢谢
      

  4.   

    你到SQL端好好找找 看看是否有yrk这个字段
      

  5.   

    With ADOQuery1 do
     begin
     Close ;
      SQL.Clear ;
       SQL.add('update detail set rkf='''+yrk+''');
      ExecSQL ;
     end;
      

  6.   

    我认为主要是你在TQUERY中设的表名是否正确
      

  7.   

    因为你将Query的ParamCheck设置成了False,你写的SQL语句中的变量未被解析,变量数为0,你引用Parameters[0]当然出错。
    把它修改成True,你的代码即可正确执行了。
      

  8.   

    Query的ParamCheck原来就是True,还提示原来的错误。
      

  9.   

    你的QUERY的CONNECTION是不是没有设定????
      

  10.   

    其实这并不是因为数组从第几个下标开始的问题,下标为[0]的参数其实是一个返回值,我们不用给它赋值,但上面的问题我也有遇过,最后是我自己解觉的,兄弟们不妨试一下!
    在你给参数赋值的时候不要使用数组的下标,而直接使用StoredProc的ParamsByName()这个属性来给参数赋值,这样就不会引起上面的问题!
    大家可以试一下,如果有问题可以直接给我发邮件![email protected]