错误如下:
Either Bof or Eof is True, or the current record has been deleted, Requested operation requires a current record.表结构如下:select * from customerfapiaoLabelName  Label_Top  Label_Left  Label_Width  Label_Height
--- ----------------------------------------------------- 
CustLabel1  38.0        62.0        70.0        25.0
CustLabel2  36.0        186.0       70.0        25.0
CustLabel3  37.0        314.0       70.0        25.0
CustLabel4  82.0        22.0        70.0        19.0
CustLabel5  81.0        106.0       70.0        19.0代码如下:procedure TForm1.Button4Click(Sender: TObject);
begin
  adoquery1.First;
  while (not adoquery1.eof) do
  begin
    CustLabel := TQRLabel.Create(tempband);
    CustLabel.Parent := tempband;
    CustLabel.Name := adoquery1.fieldbyname('LabelName').asstring;
    CustLabel.Caption := adoquery1.fieldbyname('LabelName').asstring;
    CustLabel.Top := adoquery1.fieldbyname('Label_Top').value;
    CustLabel.Left := adoquery1.fieldbyname('Label_Left').value;
    CustLabel.Width := adoquery1.fieldbyname('Label_Width').value;
    CustLabel.Height := adoquery1.fieldbyname('Label_Height').value;
    CustLabel.autosize := true;
    CustLabel.Color := clWindow;
    adoquery1.Next;
  end;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  adoquery1.First;
  while (not adoquery1.eof) do
  begin
    TQRlabel(tempband.findcomponent(adoquery1.fieldbyname('LabelName').asstring)).free;
    adoquery1.Next;
  end;
  adoquery1.Active := false;
end;各位高人看看有什么错误,指点一下,解决后立刻给分!

解决方案 »

  1.   

    select * from customerfapiao
    这里要加一个表的扩展名。
    要改成select * from customerfapiao.db
      

  2.   

    你的adoquery1是不是在button4click后有别的操作了?
      

  3.   

    procedure TForm1.Button4Click(Sender: TObject);
    begin--->adoquery1.active:=true;  adoquery1.First;
      while (not adoquery1.eof) do
      begin
        CustLabel := TQRLabel.Create(tempband);
        CustLabel.Parent := tempband;
        CustLabel.Name := adoquery1.fieldbyname('LabelName').asstring;
        CustLabel.Caption := adoquery1.fieldbyname('LabelName').asstring;
        CustLabel.Top := adoquery1.fieldbyname('Label_Top').value;
        CustLabel.Left := adoquery1.fieldbyname('Label_Left').value;
        CustLabel.Width := adoquery1.fieldbyname('Label_Width').value;
        CustLabel.Height := adoquery1.fieldbyname('Label_Height').value;
        CustLabel.autosize := true;
        CustLabel.Color := clWindow;
        adoquery1.Next;
      end;
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin--->adoquery1.active:=true;  adoquery1.First;
      while (not adoquery1.eof) do
      begin
        TQRlabel(tempband.findcomponent(adoquery1.fieldbyname('LabelName').asstring)).free;
        adoquery1.Next;
      end;
      adoquery1.Active := false;
    end;
      

  4.   

    应该是楼上说得原因的 你的数据集还没有打开呢 
    开始的时候应该 adoquery1.open的 使数据集处于打开的状态的 这样才可以浏览数据的
      

  5.   

    檢查adoquery1   是否打開, 是否為空吧!
      

  6.   

    我猜你用的是不是Delphi 5,这之中有个bug,就是在Query达到eof的时候将其free(active我没有试过,不过很可能也是这个样子)的时候,将会出现那个错误信息。如你的代码:
    procedure TForm1.Button4Click(Sender: TObject);
    begin
      adoquery1.First;
      while (not adoquery1.eof) do
      begin
        // ...
      end;
      // 这个循环结束后,eof将为true
    end;然后在FormClose的时候:adoquery1.Active := false; // 这就有错了解决的方法:
    1、给你的Delphi 5打个补丁;
    2、使用Delphi 6或以上版本;
    3、在执行free或active的操作之前使用First方法避免eof为真的情况。
      

  7.   

    多谢各位帮忙,虽然大家答的都不对,最后的问题是我的Delphi出了问题,重装一次后全部解决!各位接分!