如果想用DBGRID控件显示一个表的信息,而该表中有多个字段是参照其它表的主键的外键字段(即ID字段),我想让DBGRID显示的是它的NAME字段,而增加、修改操作实际存储的还是ID字段,不知该如何实现,如果用代码自己实现显得很不方便,请高手指点一下。

解决方案 »

  1.   

    在数据集中添加lookup字段可以实现
      

  2.   

    把那列的visible设置为false不就可以了吗?
    用StringGrid控件把
      

  3.   

    to drift1981:我用的是adoquery或adotable--->DataSource----->DBGrid控件的,不知你说的“添加lookup字段可以实现”,具体应如何操作。
    to yinzhiw:比如说一个员工表(em_id,em_name,em_department_id,em_duty_id)分别参照另两个表department(dep_id,dep_name)  duty(du_id,du_name),你能举例说明你的方法吗
      

  4.   

    在数据集中新建一个字段,字段类型设为lookup,再填写关联字段就可以了
      

  5.   

    可以在想要显示字段的gettext事件中写代码呀
      

  6.   

    三种方法
    1.inner join 连接想要的表 adoquery添加显示名字的静态字段
    2.adoquery的静态字段的gettext事件里
    if not Sender.Isnull then 
    begin
      text:=想要显示的值
    end;
    3.计算字段
    在adoquery1的oncalcfields事件里写
    fieldbyname('计算字段').asstring:=想要显示的值计算字段不能排序第一种方法最好
      

  7.   

    1.inner join 连接想要的表 adoquery添加显示名字的静态字段
    后显示是没问题了,但是我一更新,把主表所参考的表的字段也更新了,我的意思是显示后,我做的更新和添加操作也就是存储的时候还是ID