with adoquery1 do
     begin
          close;
          sql.clear;
          sql.Add('select name as n,caption as c from t_oem');
          open; //得到菜单列表          if recordcount >0 then
          begin
              CheckListBox1.Clear;
              first;
              while not eof do
              begin
                  CheckListBox1.items.add(Format('%-5s', [fieldbyname('n').asstring]) + fieldbyname('c').asstring);
                  next;
              end; //绘制列表在控件中
              close; //关闭查询
          end;
     end;这段代码有错吗? 我怎么在CLOSE的时候就报错啊?

解决方案 »

  1.   

    把close放在外面试试
    with adoquery1 do
         begin
              close;
              sql.clear;
              sql.Add('select name as n,caption as c from t_oem');
              open; //得到菜单列表          if recordcount >0 then
              begin
                  CheckListBox1.Clear;
                  first;
                  while not eof do
                  begin
                      CheckListBox1.items.add(Format('%-5s', [fieldbyname('n').asstring]) + fieldbyname('c').asstring);
                      next;
                  end; //绘制列表在控件中
                  
              end;
             adoquery1.close; //关闭查询
         end;
      

  2.   

    没错呀,为了安全,把close 放在
    with adoquery1 do
         begin
              close;
              sql.clear;
              sql.Add('select name as n,caption as c from t_oem');
              open; //得到菜单列表          if recordcount >0 then
              begin
                  CheckListBox1.Clear;
                  first;
                  while not eof do
                  begin
                      CheckListBox1.items.add(Format('%-5s', [fieldbyname('n').asstring]) + fieldbyname('c').asstring);
                      next;
                  end; //绘制列表在控件中
              end;
              close; //关闭查询    ------放在这儿
         end;
      

  3.   

    现在行了  我在CLOSE之前加了个 FIRST 
    谢谢各位 都有分