List index out of bounds

Elvis_chen 2011-12-01 11:28:34

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


需要怎么修改。
...全文
80 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
风车呼噜噜 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kaikai_kk 的回复:]

SQL[2]是第3行,你打开的SQL属性,应该没有3行

建议不要用SQL[]这种用法;
因为有时你并不知道SQL里面有几行,每一行又是那些语句
用SQL.Add();或者SQL.Text重写SQL语句吧,如:

SQL.Clear;
SQL.Add('select * from t where ...');
SQL.Add('and ...');
...


SQL.……
[/Quote]
superlixiao78 2011-12-01
  • 打赏
  • 举报
回复
这就说明你的sql只有2行
sql[2]代表第三行。
Elvis_chen 2011-12-01
  • 打赏
  • 举报
回复
5楼的方法可以
babydog01 2011-12-01
  • 打赏
  • 举报
回复
把你完整的SQL语句贴出来!
Elvis_chen 2011-12-01
  • 打赏
  • 举报
回复
楼上的几种方法都试了,可以都不行,仍旧报同样的错误。
kaikai_kk 2011-12-01
  • 打赏
  • 举报
回复
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 ... ';
lhy 2011-12-01
  • 打赏
  • 举报
回复
ADOQuery1.SQL.Strings[2] := 'WHERE refname =''aa''';
我看见佛 2011-12-01
  • 打赏
  • 举报
回复
ADOQuery1.Add('WHERE refname =''aa''');
或者Filter上写过滤语句
superlixiao78 2011-12-01
  • 打赏
  • 举报
回复
或者
ADOQuery1.SQL[2] := 'WHERE refname ='+quotedstr('aa');
superlixiao78 2011-12-01
  • 打赏
  • 举报
回复
ADOQuery1.SQL[2] := 'WHERE refname ='''+'aa'+'''';

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧