小弟我使用Delphi7开发环境,使用ADOQuery连接ACCESS数据库,按条件进行查询,读取查询结果,但是读到最后一条时就不会结束,一直在读最后一条的数据,请问一下各位大虾怎样判断'是否'为最后一条,是怎样判断已经到达最后一条了。form2.ADOQuery1.Close;
  form2.ADOQuery1.SQL.Clear;
  form2.ADOQuery1.SQL.Add('select WellID from data order by WellID');
  form2.ADOQuery1.Open;
  if form2.ADOQuery1.FieldByName('WellID').Value<>NULL then        //第1条
    begin
    form1.StaticText1.Caption:=String(form2.ADOQuery1.FieldByName('WellID').Value)+'号';
    form1.Image11.Visible:=True;
    form2.ADOQuery1.Next;
    end
  else
    begin
    form1.StaticText1.Caption:='未使用';
    form1.Image11.Visible:=False;
    end;  if form2.ADOQuery1.FieldByName('WellID').Value<>NULL then           //第2条
    begin
    form1.StaticText2.Caption:=String(form2.ADOQuery1.FieldByName('WellID').Value)+'号';
    form1.Image12.Visible:=True;
    form2.ADOQuery1.Next;
    end
  else
    begin
    form1.StaticText2.Caption:='未使用';
    form1.Image12.Visible:=False;
    end;之后就是一条一条的读,读早最后的时候会发现最后一条数据一直被读出来,并不能结束,请各位帮帮忙。

解决方案 »

  1.   

    if form2.ADOQuery1.FieldByName('WellID').Value<>NULL 肯定是这个条件被满足了,所以一直在循环
    最好用while not form2.ADOQuery1.Eof do
    begin
      //这里写处理代码
      form2.ADOQuery1.Next;
    end;
      

  2.   

    form2.ADOQuery1.Close;
      form2.ADOQuery1.SQL.Clear;
      form2.ADOQuery1.SQL.Add('select WellID from data order by WellID');
      form2.ADOQuery1.Open;
    while not  form2.ADOQuery1.isempty do
    begin

      if form2.ADOQuery1.FieldByName('WellID').Value<>NULL then //第1条
      begin
      form1.StaticText1.Caption:=String(form2.ADOQuery1.FieldByName('WellID').Value)+'号';
      form1.Image11.Visible:=True;
      form2.ADOQuery1.Next;
      end
      else
      begin
      form1.StaticText1.Caption:='未使用';
      form1.Image11.Visible:=False;
    end;
      end;
    while not  form2.ADOQuery1.isempty do
    begin

      if form2.ADOQuery1.FieldByName('WellID').Value<>NULL then //第2条
      begin
      form1.StaticText2.Caption:=String(form2.ADOQuery1.FieldByName('WellID').Value)+'号';
      form1.Image12.Visible:=True;
      form2.ADOQuery1.Next;
      end
      else
      begin
      form1.StaticText2.Caption:='未使用';
      form1.Image12.Visible:=False;
    end;
      end;
      

  3.   

    if adoquery1.eof 就判断是否为最后一行.建议用 while not adoquery1.eof do
    begin
       ......
       adoquery1.next;
    end;
      

  4.   

    if adoquery1.eof 就判断是否为最后一行.建议用 while not adoquery1.eof do
    begin
      ......
      adoquery1.next;
    end;