首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-04-27 
报错List index out of bounds (1),越界错误。。求解。。//初始药品名称下拉菜单单的内容ADOQuery1.CloseADOQ

报错List index out of bounds (1),越界错误。。求解。。
//初始药品名称下拉菜单单的内容
  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)

[解决办法]
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;
[解决办法]
ADOQuery1.ExecSQL;这一句可以不用
[解决办法]
/初始药品名称下拉菜单单的内容
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;
[解决办法]
http://topic.csdn.net/u/20120425/19/127f0b5f-207d-49fa-9a18-618ef7364e0d.html?60672
[解决办法]
记录数与列数 明显用法不正确呀
[解决办法]
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;

热点排行