如果在form中使用dbcombobox.如果只是显示某个字段的列表,这很简单,但是怎么样能够同时显示两个字段呢?或者不用dbcombobox,就用combobox.怎么实现呢?但是这样的话.combobox得key值又怎么赋给每个item呢?

解决方案 »

  1.   

    你把两个字段连在一起写,中间加空格
    combobox1.items.add(adoquery1.fields[0].value  +  adoquery1.fields[1].value);
      

  2.   

    谢谢楼上两位,二位都是针对combobox写的办法,
    combobox1.items.add(adoquery1.fields[0].value  +  adoquery1.fields[1].value);
    只能写进指定的纪录,不能写入全部的纪录,有没有类似asp里
    do while not rs.eof
      combobox1.items.add("???")
    rs.movenext
    loop
    的方式,可以把所有表中的记录都写进去?另外,每个item得key值怎么办呢?用户通过这个combo选择时候,并非是需要显示的内容,而是需要的在数据库中与当前选择的选项相关的另一个字段的值。
    就好像<option value="csdn">程序员大本营</option>需要的是csdn的值。
      

  3.   

    笨办法一个:
    1.取出两个字段的内容并写入一个文本文件
    2.再将文本文件的内容调入COBOMBOX
      

  4.   

    combobox1.clear;
    query.first;
    while not query.eof do
    begin
      combobox1.items.add("???")
      query,next;
    end
      

  5.   

    至于key,我也有个笨办法
    你用两个combobox
    循环放入的时候一个放key,一个放 值当选择放入值得combobox的item时,根据他的index到另外一个combobox去找对应的key
      

  6.   

    楼上写的代码能不能用啊。如果可用的话,那就应该不是问题了,可是,都没有提到关于key的问题啊。
    之所以要显示两个字段的值在combobox里面,那是因为直观的需要,但是最终用户选择后,要通过这个combobox传送的是另一个值,
    比如:<option value="csdn">程序员大本营</option>
    显示的是:程序员大本营
    而实际用户选择时候,程序需要的是csdn这个值。令:dbcombobox 有没有办法可使让用户直接编辑的??就好像combobox属性得csdropdown一样
      

  7.   

    至于key,我也有个笨办法
    你用两个combobox
    循环放入的时候一个放key,一个放 值当选择放入值得combobox的item时,根据他的index到另外一个combobox去找对应的key
    嗬嗬,我也想到过,能不能给个具体的代码啊。假设:数据表叫aaa combobox1叫bbb。combbox2叫ccc.能不能把两个combobox交互的代码写清晰一点。谢谢了。
      

  8.   

    combobox1.clear;
    query.first;
    while not query.eof do
    begin
      combobox1.items.add(query1.fieldbyname('字段').asstring);
      query,next;
    end................不能用???你用两个,把放key的那个隐藏掉
      

  9.   

    不需要交互,比如你要返回以各bbb里的值,而用户选择了ccc里的值(bbb是隐藏的)showmessage(bbb.items[ccc.itemindex]) 就可以了
      

  10.   

    combobox1.clear;
    query.first;
    while not query.eof do
    begin
      combobox1.items.addobject('', object);////////???????
      query,next;
    end
      

  11.   

    object ComboBox1: TComboBox
        Left = 32
        Top = 56
        Width = 145
        Height = 21
        ItemHeight = 13
        TabOrder = 1
        combobox1.clear;
        adoquery1.first;
        while not adoquery1.eof do
        begin
     combobox1.items.add(adoquery1.fieldbyname('aaa')+adoquery1.fieldbyname('bbb'));
      adoquery1.next;
      end
    end
      object ADOConnection1: TADOConnection
        Connected = True
        ConnectionString = 
          'Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;U' +
          'ser ID=sa;Initial Catalog=hahaha;Data Source=.'
        LoginPrompt = False
        Provider = 'SQLOLEDB.1'
        Left = 8
        Top = 8
      end
      object ADOQuery1: TADOQuery
        Active = True
        Connection = ADOConnection1
        CursorType = ctStatic
        Parameters = <>
        SQL.Strings = (
          
            'select aaa,bbb from table1 order by bbb desc')
        Left = 40
        Top = 8
      end
      object DataSource1: TDataSource
        DataSet = ADOQuery1
        Left = 72
        Top = 8
      end
    end这样写为什么不对啊。
      

  12.   

    query1.fieldbyname('字段').asstring
    拜托看仔细点和你的有什么不一样
      

  13.   

    不好意思,我是蔡鸟,可是把上面的
    combobox1.items.add(adoquery1.fieldbyname('aaa')+adoquery1.fieldbyname('bbb'));
    改称
    combobox1.items.add(adoquery1.fieldbyname('aaa').asstring+adoquery1.fieldbyname('bbb').asstring);还是提示 [Error] RLINK32: Unsupported 16bit resource in file "testa.dfm"
      

  14.   

    嗬嗬,应该把他写进from_oncreate()里面,就可以实现了,
      

  15.   

    你新建一个form,只要数据库控件和combobox看看具体上面的问题,楼下的回答吧,我没见过
      

  16.   

    combobox1.items.add(adoquery1.fieldbyname('aaa').asstring+adoquery1.fieldbyname('bbb').asstring);看看数据类型
      

  17.   

    asstring应该不管字段是什么类型的,都可以吧,除非是strtoint.可能有问题,
    inttostr会有什么问题啊