如果是楼上所说,每次都Open,Close起不很浪费时间,不如都到内存中再比较吧

解决方案 »

  1.   

    对,把用过的编号放到一个TStringList中,在比较会很快的
      

  2.   

    是,如果把初始化部分放在表单onshow事件中,在buttonclick事件中仅有open速度会快些吧。但结果查不到,如果用stringlist怎样做呢,请教。
      

  3.   

    以下:为何结果不对呢。
    procedure TForm4.Button8Click(Sender: TObject);
    var i,j,k,m:integer;
    begin
    bh_string:=tstringlist.create;
    with datamodule6.xmk do
    begin
      First;
      while  not Eof do
      begin
        bh_string.Add(trim(fieldbyname('xmbh').value));
        next;
      end;
      m:=datamodule6.xmk.fieldbyname('xmbh').value;
    end;
     bh_string.sort;
    showmessage(bh_string.text);
     for i:=1001 to m do
     begin
       bh_string.find(inttostr(i), j);
       if j <= -1 then
        combobox1.Items.add(inttostr(i));
     end;end;
      

  4.   

    procedure TForm4.Button8Click(Sender: TObject);
    var i,j,k,m:integer;
    begin
    bh_string:=tstringlist.create;
    with datamodule6.xmk do
    begin
      First;
      while  not Eof do
      begin
        bh_string.Add(trim(fieldbyname('xmbh').value));
        next;
      end;
      //Eof为真了,是读不出数据的;下面有错
      m:=datamodule6.xmk.fieldbyname('xmbh').value;
    end;
      

  5.   

    帮我看看http://www.csdn.net/Expert/topic/472/472477.shtm谢先
      

  6.   

        qxm.sql.add('select * from xmk where xmbh>1000 and xmbh<:j');
      

  7.   

    procedure TForm4.Button8Click(Sender: TObject);
    var i,j:integer;
    begin
      datamodule6.xmk.Last;
      j:=datamodule6.xmk.fieldbyname('xmbh').value;
      qxm.close;
      qxm.sql.clear;
      qxm.sql.add('select * from xmk where xmbh>1000 and xmbh<:i');
      qxm.Parameters.ParamByName('i').value:=j+1;
      qxm.Prepared;
      qxm.Open;
      while not qxm.Eof do
      begin
        combobox1.Items.add(qxm.FieldByName('xmbh').AsString);
      end;
    end;
      

  8.   

    procedure TForm4.Button8Click(Sender: TObject);
    var i,j:integer;
    begin
      datamodule6.xmk.Last;
      j:=datamodule6.xmk.fieldbyname('xmbh').value;
      qxm.close;
      qxm.sql.clear;
      qxm.sql.add('select * from xmk where xmbh>1000 and xmbh<:i');
      qxm.Parameters.ParamByName('i').value:=j+1;
      qxm.Prepared;
      qxm.Open;
      while not qxm.Eof do
      begin
        combobox1.Items.add(qxm.FieldByName('xmbh').AsString);
        qxm.Next;
      end;
    end;