求高人知道循环查询如何做,一下有什么错
求高人知道循环查询怎么做,一下有什么错
procedure Tzffm.Edit1Click(Sender: TObject);
var
i,p,q:integer;
begin
ADOquery1.Close;
adoquery1.sql.clear;
ADOquery1.SQL.Add('select * from location_table where 品番='''+Edit1.text+'''');
ADOquery1.Open;
edit2.text:=adoquery1.FieldValues['位置'];
ADOquery2.Close;
adoquery2.sql.clear;
ADOquery2.SQL.Add('select * from zf_data where 品番='''+Edit1.text+'''');
ADOquery2.Open;
edit4.text:=adoquery2.FieldValues['额定收容数'];
edit5.text:=adoquery2.FieldValues['暂放器具'];
if edit5.text='HU' then
begin
adoquery3.close;
adoquery3.sql.clear;
adoquery3.sql.add('select * from zf_table where loc_key='''+(leftstr(edit2.text,6)+'X1')+'''');
adoquery3.Open;
i:=strtoint(adoquery3.fieldvalues['ip']);
p:=i;
while adoquery3.FieldValues['part_no']<>''
do
begin
p:=p+1;
adoquery3.close;
adoquery3.sql.clear;
adoquery3.sql.add('select * from zf_table where ip= '''+inttostr(p)+'''');
adoquery3.Open;
end;
edit3.text:=inttostr(p);//adoquery3.fieldvalues['loc_key'];
end;
q:=i;
while q>=1 do Inc(q,-1);//向下查找空货位
adoquery3.close;
adoquery3.sql.clear;
adoquery3.sql.add('select * from zf_table where ip= '''+inttostr(q)+'''');
adoquery3.Open;
end;
// 检查那个距离i近就取谁的值edit3.text:=adoquery3.FieldValues['loc_key'];
end.
搞不清楚为什么运行之后是无响应啊 ,求大虾指导,在此多谢大家。
------解决方案--------------------
你while用的adoquery3,那么while内部就不能再使用adoquery3,换一个,然后每循环一次adoquery3.Next
procedure Tzffm.Edit1Click(Sender: TObject);
var
i,p,q:integer;
begin
ADOquery1.Close;
adoquery1.sql.clear;
ADOquery1.SQL.Add('select * from location_table where 品番='''+Edit1.text+'''');
ADOquery1.Open;
edit2.text:=adoquery1.FieldValues['位置'];
ADOquery2.Close;
adoquery2.sql.clear;
ADOquery2.SQL.Add('select * from zf_data where 品番='''+Edit1.text+'''');
ADOquery2.Open;
edit4.text:=adoquery2.FieldValues['额定收容数'];
edit5.text:=adoquery2.FieldValues['暂放器具'];
if edit5.text='HU' then
begin
adoquery3.close;
adoquery3.sql.clear;
adoquery3.sql.add('select * from zf_table where loc_key='''+(leftstr(edit2.text,6)+'X1')+'''');
adoquery3.Open;
i:=strtoint(adoquery3.fieldvalues['ip']);
p:=i;
while adoquery3.FieldValues['part_no']<>''
do
begin
p:=p+1;
adoquery3.close;
adoquery3.sql.clear;
adoquery3.sql.add('select * from zf_table where ip= '''+inttostr(p)+'''');
adoquery3.Open;
end;
edit3.text:=inttostr(p);//adoquery3.fieldvalues['loc_key'];
end;
q:=i;
while q>=1 do Inc(q,-1);//向下查找空货位
adoquery3.close;
adoquery3.sql.clear;
adoquery3.sql.add('select * from zf_table where ip= '''+inttostr(q)+'''');
adoquery3.Open;
end;
// 检查那个距离i近就取谁的值edit3.text:=adoquery3.FieldValues['loc_key'];
end.
搞不清楚为什么运行之后是无响应啊 ,求大虾指导,在此多谢大家。
------解决方案--------------------
你while用的adoquery3,那么while内部就不能再使用adoquery3,换一个,然后每循环一次adoquery3.Next