with ADOQuery1 do
begin
  ADOQuery1.close;
  ADOQuery1.SQL[2] := 'WHERE refname =''aa''';  //在这里报错 List index out of bounds
end;需要怎么修改。

解决方案 »

  1.   

     ADOQuery1.SQL[2] := 'WHERE refname ='''+'aa'+'''';
      

  2.   

    或者
     ADOQuery1.SQL[2] := 'WHERE refname ='+quotedstr('aa');
      

  3.   

    ADOQuery1.Add('WHERE refname =''aa''');
    或者Filter上写过滤语句 
      

  4.   

    ADOQuery1.SQL.Strings[2] := 'WHERE refname =''aa''';
      

  5.   

    SQL[2]是第3行,你打开的SQL属性,应该没有3行建议不要用SQL[]这种用法;
    因为有时你并不知道SQL里面有几行,每一行又是那些语句
    用SQL.Add();或者SQL.Text重写SQL语句吧,如:SQL.Clear;
    SQL.Add('select * from t where ...');
    SQL.Add('and ...');
    ...或
    SQL.Text:='select * from t where ... ';
      

  6.   

    这就说明你的sql只有2行
    sql[2]代表第三行。