报错List index out of bounds (1),越界错误。。求解。。

cxycxycxycxycxy 2012-04-25 07:34:43
//初始药品名称下拉菜单单的内容
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select 药品名称');
ADOQuery1.SQL.Add('from medicine where 用户号 =0');
ADOQuery1.ExecSQL;
ADOQuery1.Open;
for i:=0 to adoquery1.RecordCount-1 do //循环取字段
begin
combobox1.items.Add(ADOQuery1.Fields[i].AsString); //把取得的字段填入下拉列表框中
end;


报错:List index out of bounds (1)
...全文
121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
forving 2012-04-26
  • 打赏
  • 举报
回复
with ADOQuery1 do
begin
Close;
sql.Clear;
sql.Add('select 药品名称 from medicine where 用户号 =0');
open;
while not adoquery1.Eof do
begin
combobox1.items.Add(ADOQuery1.FieldByName('药品名称').AsString);
adoquery1.next;
end;
close;
end;
taste品味 2012-04-26
  • 打赏
  • 举报
回复
记录数与列数 明显用法不正确呀
我看见佛 2012-04-25
  • 打赏
  • 举报
回复
/初始药品名称下拉菜单单的内容
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select 药品名称');
ADOQuery1.SQL.Add('from medicine where 用户号 =0');
ADOQuery1.ExecSQL;-->ExecSQL用于UPDATE或INSERT语句,OPEN用于查询语句。不然会出错。
ADOQuery1.Open;
for i:=0 to adoquery1.RecordCount-1 do //循环取字段
begin
combobox1.items.Add(ADOQuery1.Fields[i].AsString);->按你的意思应该是改成ADOQuery1.Fields[0].AsString//或者ADOQuery1.FieldByName('药品名称').AsString
ADOQuery1.Next;//就用Next移动游标,不然取出的都是第一条记录.
end;
22222bbb 2012-04-25
  • 打赏
  • 举报
回复
ADOQuery1.ExecSQL;这一句可以不用
22222bbb 2012-04-25
  • 打赏
  • 举报
回复
ADOQuery1.Fields[i].AsString 这一句是第I个字段啊,不是第I条记录,不要用 for循环,用while

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select 药品名称');
ADOQuery1.SQL.Add('from medicine where 用户号 =0');
ADOQuery1.ExecSQL;
ADOQuery1.Open;
ADOQuery1.First;
while not ADOQuery1.Eof do
begin
combobox1.items.Add(ADOQuery1.Fields[0].AsString);
ADOQuery1.Next;
end;

2,497

社区成员

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

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