我需要用到DBLookupCombobox控件,根据其中的一个表的代码值来显示另外一个表中的中文说明,就好像我们常看到的一些东东里的用户所属部门之类的问题。我的代码是这样写的,在Form的OnCreate事件中:
try
  with DM.CDS_user do
  begin
    Close;
    CommandText:='';
    CommandText:='select * from logintable';
    Open;
  end;
  with DM.CDS_set do
  begin
    Close;
    CommandText:='';
    CommandText:='select * from deptable';
    Open;
  end;
finally
  DBLookupCombobox1.DataSource:=DM.DS_user;
  DBLookupCombobox1.DataField:='user_dep';
  DBLookupCombobox1.ListSource:=DM.DS_set;
  DBLookupCombobox1.ListField:='dep_desc';
  DBLookupCombobox1.KeyField:='dep_';
  DBLookupCombobox1.KeyValue:='dep_';
end;
其中两个表的结构是:
logintable  用户表
user_name  varchar(20) 
user_passwd varchar(18)
user_dep varchar(4)
user_power char(7)
deptable  专业表
dep_  varchar(4)
dep_desc varchar(10)
logintable表和deptable表之间相互关联,主键为dep_,外键为user_dep,但是当我运行以后,DBLookupCombobox里面下拉能看到deptable里面的dep_desc值,但是不能根据logintable里用户所属的专业显示中文值,显示的是一个空白的值,请大家帮我解决一下。

解决方案 »

  1.   

    注意:要双击DBLookupCombobox1,设置其显示的字段:
      

  2.   

    哎!~~~~~~~~~~~不知道为什么在实际应用的时候我用dblookupcombobox控件时候也存在类似的问题,
    DataSource和ListSource不能同时指定。通常我会在dblookupcombobox的onExit事件中把dblookupcombobox的值给一个tdbedit类的控件,让dbedit去连接存入数据表,而dblookupcombobox本身只负责连来源数据表。
      

  3.   

    DBLookupCombobox1.KeyValue不需要你指定