如题,代码如下  with DM.ADODataSet_Help do
  begin
    Close;
    CommandText :=
      'select pinyin,tiaomu,leibie from help where leibie = (:leibie)';
    Parameters.ParamByName('leibie').Value := "职务";
    Open;
    First;
  end;    while not DM.ADODataSet_Help.Eof do
    begin
      DBComboBox.Items.Add(DM.ADODataSet_Help.FieldValues['tiaomu']);
      DM.ADODataSet_Help.Next;
    end;
用以上方法可以实现功能,但是很慢,求一个快速的解决方法

解决方案 »

  1.   

    声明一个变量:
    var
    mystrings:tstring;
    //begin中加多一行
    mystrings:=tstrings.create;
    try
    把dbcombobox.items.add(...)这行换成
    mystrings.add(...);
    退出循环后
    dbcombobox.items:=mystrings;finally
    tstrings.free
    end;
    //操作变量比直接操作控件要快,试试吧
      

  2.   

    不管用什麼方法,你都要一條一條的從數據集取數據再加到你的items中,如果你感覺慢是因為數據太多了,數據在1000條以下,是察覺不到的。如果慢那是你的數據庫效率問題了。
    我想是沒有更高效的語句了。
      

  3.   

    baronyang(魔蝎) 说得办法很好阿
    如果是查询数据的速度的问题,
    你可以看看是不是索引没有用上,等原因以提高查询速度
      

  4.   

    我不知道你程序的结构和连接方式,所以不好定论,但是我感觉你的速度慢可能在ADODataSet的问题,它可能是把表打开后再过滤,这样就会很慢。你试试Query,他的方式是先过滤再打开数据集。你试试吧。
      

  5.   

    谢谢了,问题解决了,先是用 baronyang(魔蝎) 的办法,然后给数据库建立了索引,以前用的AdoDataSet,换成了AdoQuery,谢谢大家,马上结帖。