有两个表:表1有: IDD    YBW   NOYNH  SFSH
                 工程科  ****  *****  ****
                 后勤科  ****  *****  ****
                 营销科  ****  *****  ****          表2有:NAME  YWEN    IDD    
                 周军  会计  工程科
                 王明 计划员  工程科
                 张涛 采购员  后勤科
                 朱勇  会计  工程科
两张表都有相同字段IDD-IDD
想实现如下功能表单上放两个dbgrid1和dbgrid2,dbgrid1连接表1、dbgrid2连接表2当用户在dbgrid1选择(工程科)时dbgrid2上显示所有工程科的职员。
            dbgrid1     工程科   ****   *****   ****
            
            dbgrid2     周军     会计    工程科
                        王明    计划员   工程科
                        朱勇     会计     工程科

解决方案 »

  1.   

    既然是三层的,基于数据流量及性能考虑:
    dbgrid1 ==> ClientDataSet1
    dbgrid2 ==> ClientDataSet2处理ClientDataSet1的AfterScroll事件,在事件中做如下处理:
    ClientDataSet2.Close();
    ClientDataSet2.CommandText := 'select * from 表2 where IDD=' + QuotedStr(ClientDataSet1.FieldByName('IDD').AsString);
    ClientDataSet2.Open();
      

  2.   

    你也可以在dbgrid1上编写代码,当选中哪个科的时候,用 zhq2000(方舟)的办法把符合条件的记录取出来就是了
      

  3.   

    不行提示错误,问题在ClientDataSet1.FieldByName('IDD').AsString);
      

  4.   

    ClientDataSet2.Close();
    ClientDataSet2.CommandText := 'select * from 表2 where IDD=' + QuotedStr(ClientDataSet1.FieldByName('IDD').AsString);
    ClientDataSet2.Open();