高分求解一数据库难题!解答后立即给分!
现在同一数据库里有两张表:表一和表二。
表一里面记录的是员工的详细信息,表二里面记录的主要是部门名称。
有一窗口数据库就连接的是表一,运行程序,添加数据,通过选取部门名称下拉列表框中的部门名称[当程序运行的时候就把表二里面的部门名称全部插入到一个下拉列表框中]和填写了其它的一些数据后保存,我样怎样才能让这个部门名称在窗口中显示中文名称,而在数据库中却保存的是该部门的唯一编号呢!
而且在查看以前添加的数据也要求窗口中示中文名称!
写出代码者有高分!
问题点数:0、回复次数:7Top
1 楼careerist()回复于 2003-04-02 07:34:59 得分 0
这需要在表二中至少有两个字段,一个是部门的唯一编号,另一个是部门的中文名称,这样才能达到你的要求。Top
2 楼Chayezi(yes)回复于 2003-04-02 08:48:43 得分 0
用DBLookupComboBox控件可实现你的要求,其中
DataSource和DateField是你要保存的表的数据源和对应字段;
ListSource是下拉的数据源
listField是下拉显示的字段,例如部门的中文名称的字段;
keyField是对应的部门id的字段
保存的时候像其他数据库控件那样保存就行了
Table1.post;Top
3 楼DelUser(探索者)回复于 2003-04-02 08:54:32 得分 0
DBLookupComboBoxTop
4 楼blueshu(学习Oracle9i)回复于 2003-04-02 08:55:27 得分 0
同意楼上Top
5 楼ycxuyuq(注册失败)回复于 2003-04-02 08:56:40 得分 0
这也叫数据库难题吗?
或者在表二中增加一个部门中文名称字段,或者新建一个部门ID与中文名称的对应关系表。
如果不希望在数据库里保存中文名称,那么在程序里建对应关系数组好了,运行时去查找。
如
var
relation : array[1..2,1..10] of string;
begin
relation[1][1] := '1';
relation[1][2] := '开发室'
...
end;
编程重要的是思想,并不是一味代码,这样水平才有真正提高
Top
6 楼lovelymelon(小人物)回复于 2003-04-02 08:57:44 得分 0
对正如careerist() ( ) 所说的,表二至少要又两个字段,一个编号,另一个是部门名称。
在向下拉框导入时导入部门名称,在保存时保存编号。
向下拉框中导入部门名称:
table2.open;
table2.first;
i:=table2.recordcount;
if i>0 then
beign
for j:=0 to i-1 do
begin
s:=table2.fieldvalues['部门名称'];
if pos(s,combobox1.items.text)<=0 then
combobox1.items.add(s);
table2.next;
end;
end;
向数据库中保存:
table2.open;
with table2 do
locate('编部门名称,combobox1.text);
s:=table2.fieldvalues['编号'];
table1.open;
table1.append;
table1.fieldvalues['字段名']:=s;
.
.
.
table1.post;Top
7 楼dyf2001(西风)回复于 2003-04-02 08:58:16 得分 0
初级问题
lookupTop




