现在同一数据库里有两张表:表一和表二。表一里面记录的是员工的详细信息,表二里面记录的主要是部门名称。有一窗口数据库就连接的是表一,运行程序,添加数据,通过选取部门名称下拉列表框中的部门名称[当程序运行的时候就把表二里面的部门名称全部插入到一个下拉列表框中]和填写了其它的一些数据后保存,我样怎样才能让这个部门名称在窗口中显示中文名称,而在数据库中却保存的是该部门的唯一编号呢!而且在查看以前添加的数据也要求窗口中示中文名称!
                                             写出代码者有高分!

解决方案 »

  1.   

    用DBLookupComboBox控件可实现你的要求,其中
    DataSource和DateField是你要保存的表的数据源和对应字段;
    ListSource是下拉的数据源
    listField是下拉显示的字段,例如部门的中文名称的字段;
    keyField是对应的部门id的字段保存的时候像其他数据库控件那样保存就行了
    Table1.post;
      

  2.   

    这也叫数据库难题吗?
    或者在表二中增加一个部门中文名称字段,或者新建一个部门ID与中文名称的对应关系表。
    如果不希望在数据库里保存中文名称,那么在程序里建对应关系数组好了,运行时去查找。

    var
      relation : array[1..2,1..10] of string;
    begin
      relation[1][1] := '1';
      relation[1][2] := '开发室'
      ...
    end;
    编程重要的是思想,并不是一味代码,这样水平才有真正提高
      

  3.   

    对正如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;