我的是这样的:一个Adoconnection1,adoquery1,adoquery2,datasource1,datasource1.dataset:=query1,dbgrid.datasource:=datasource1,在dbgrid一列中有个“职称“,我想用下拉选择(选择的范围在adoquery2中,adoquery2.sql.text:="select 职称 from table1").这个应该怎么做?谢谢!!

解决方案 »

  1.   

    你改一下职称字段属性,为lookup字段,再做相应的设置就行了,如果dbGrid不支持,就用
    dbgridEh
      

  2.   

    如果是我,我会在服务器端定义一个函数,功能实现select 职称 from table1,封装一下,传给client.
      

  3.   

    你在那个"职称"字段设置buttonstyle:=cbsAuto,然后可以把你adoquery2读来的数据放在该字段的对应的picklist中!
      

  4.   

    dbgrid1的职称列的Buttonstyle设为cbsAuto
    在编辑该列之前的某个事件中:
    while not adoquery2.eof do
    begin
      dbgrid1.'职称列'.PickList.add(adoquery2.fieldbyName('职称').asstring);
      adoquery2.next;
    end;
      

  5.   

    query2.close;
    query2.SQL.add('select distinct 职称 from table1');
    query2.open;
    query2.first;
    while not adoquery2.eof do
    begin
      dbgrid1.'职称列'.PickList.add(adoquery2.fieldbyName('职称').asstring);
      adoquery2.next;
    end;
      

  6.   

    with query do
    begin
      close;
      sql.clear;
      sql.add('select distinct 职称 from table1');
      open;
      first;
      while eof do
      begin
        dbgrid1.fields[3].picklist.add(adoquery2.fieldbyName('职称').asstring);
      end;
    end;
      

  7.   

    http://expert.csdn.net/Expert/topic/1737/1737961.xml?temp=.724209
      

  8.   

    我认为 可以在dbgrid 中添加DBComboBox1,然后在FormCreate 中 用一个for 语句把 adoquery2中的职称的值赋值到 DBComboBox1的items中 就可以了