//初始药品名称下拉菜单单的内容
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.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)
解决方案 »
- 如何用IdMappedPortTCP实现端口转发?
- D2009 dbexpress 连接MYsql中的一点发现
- 请问如何将asc码加到数组,急急
- 急聘CTI\DELPHI\J2EE软件研发工程师
- 关于SQL的query查询----急啊,,,请大虾指点!!!
- 如何把delphi中的程序编译成应用程序
- 有对nmftp熟悉的没有
- 哪有1stclass4000,InfoPower4000的安装密码下载?急??????????????
- 高手请帮我解释!
- delphi调用c#写的webservice时怎么会出错。
- 有没有可能一个线程的Execute运行结束,但线程未真正结束?
- 怎样才能 删除 tabset 中的后几个tabs,只保留第一个
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移动游标,不然取出的都是第一条记录.//ADOQuery1.Fields[i].AsStringFields字段数,RecordCount是记录总数。所以会越界
2.for i:=0 to adoquery1.RecordCount-1 do
begin
combobox1.items.Add(ADOQuery1.Fields[i].AsString);
end;改成:
while not adoquery1.eof do
begin
combobox1.items.Add(ADOQuery1.Fields[0].AsString);
adoquery1.next;
end;只查询了"药品名称"1个字段,用Fields[0]就行了
或者用ADOQuery1.FieldByName('药品名称').AsString
begin
combobox1.items.Add(ADOQuery1.Fields[i].AsString); //把取得的字段填入下拉列表框中
end;
一个是查询的记录数,一个字段数(查出视图的列),是不一样的。
推荐这样写比较好:
adoquery1.First;
while not adoquery1.Eof do
begin
// 根据字段名取你要的数据
adoquery1.Next; // 滚动到下一条记录
end;