如题..procedure TForm1.FormCreate(Sender: TObject);
begin
//打开表,  ADOQuery1.close;
  ADOQuery1.sql.Clear();
  ADOQuery1.SQL.Add('select  * from Cars');
  ADOQuery1.Open;
  DBComboBox1.Items.Clear ;
  while (not ADOQuery1.Eof) do
  begin
    //这里加判断
    DBComboBox1.Items.Add(ADOQuery1.FieldByName('CarName').Text);
    ADOQuery1.Next;
  end;
  end;

解决方案 »

  1.   

    一般DBComboBox都是用来限定输入值范围的,
    例如有一个“性别”字段,为了限制就允许输入“男”“女”,
    我们可以在Items里加入“男”、“女”两行,这样在编辑的时候可以限制输入,
    如果字段值不是我们限定的,则显示本来的内容看你的用法好像不是这个目的
      

  2.   

    我使用时也遇到相同的问题!!
    你这些代码的目的是把数据库里面的项都选出来!
    我下面在用代码王数据库里面添加的时候dbComboBox选中的值根本就加不进去!不知道为什么,加进去的总是空格(或者根本没加进去)!!时时关注!!
      

  3.   

    不是你初始化到什么位置的问题。你放在onactive或oncreate中应该都可以的,你的items追加的也比较巧妙。而不能获得输入(选择)值的原因是你的dbComboBox根本没有连接数据库,或者它的readonly属性为true,所以他不可能获得text值。注意dbcombobox中你取回的值应该是text属性的值,该值应对应于数据库中一个可修改的字段。
      

  4.   

    我也碰到同样的问题,不过我的BDE连的:
    procedure Tfrm_owner.FormCreate(Sender: TObject);
    begin
      query2.Close;
      query2.SQL.Clear;
      query2.sql.Add('select b.prod_type_name from products_publication a, ');
      query2.SQL.Add('products b where a.prod_no=b.prod_no and b.status=2 ');
      query2.sql.Add('group by prod_type_name');
      query2.Open;
      dbcombobox1.Items.Clear;
      query2.First;
      while not query2.Eof do
      begin
        dbcombobox1.Items.Add(query2.fieldbyname('prod_Type_name').AsString);
        query2.Next;
      end;
    end;
    这样选择以后dbcombobox里也不会显示所选择的那项
    不知道该怎么办:(
      

  5.   

    请在每次增加新记录后,一定要为该条记录的某个字段赋一个值,就不会出现这种情况了.
    ADODataset1.Append;
    ADODataSet1.FieldByname('字段名').asString:='';
    ...
    ...
      

  6.   

    谢谢,bxyqt(碧血银枪) 
    改用 TComboBox 了,这个可以