我需要用到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里用户所属的专业显示中文值,显示的是一个空白的值,请大家帮我解决一下。
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里用户所属的专业显示中文值,显示的是一个空白的值,请大家帮我解决一下。
DataSource和ListSource不能同时指定。通常我会在dblookupcombobox的onExit事件中把dblookupcombobox的值给一个tdbedit类的控件,让dbedit去连接存入数据表,而dblookupcombobox本身只负责连来源数据表。