有2个dbgrid,分别连接着Access中的2个表,第一个表是系统名,第二个表是系列名,我希望点击系统名中的单元,能在另一个dbgrid中自动显示所包含的系列名,如何实现?

解决方案 »

  1.   

    指定系列名的MasterSource为系统名的Source,然后指定关联字段
      

  2.   

    指定系列名的对应的数据集的MasterSource为系统名的Source,然后指定关联字段
      

  3.   

    或者在系统名对应的数据集的AfterScroll事件里过滤系列名表
      

  4.   

    在DataSouse 中的onDataChange事件里写 sql 查询系统名与系列名中的关联字段的数据也可以
      

  5.   

    1,指定系列名的对应的数据集的MasterSource为系统名的Source,然后指定关联字段
    2,可以在每一个 DBGrid  的 onclick 事件里加入对另一个表数据集的过滤语句dataset2.Filted:=False;
    dataset2.Filter:='FieldName='+dataset1.FieldByName('ID').asstring;
    dataset2.filted:=True;
      

  6.   

    找不到系列名的对应的数据集的MasterSource,在哪?
      

  7.   

    我只用到datasource和adoquery加dbgrid,找不到mastersource
      

  8.   

    在第一个DBGrid对应的Dataset的AfterScroll事件中实现第二个DBGrid的DataSet刷新就可以了。
    第二个DBGrid的DataSet刷新可以采用Close、Open,也可以采用Filter的方式。
      

  9.   

    就是主从关系吧,设置系列名那个dbgrid的adoquery的DataSource为所连系统表的adoquery,在SQL中指定关联字段,打开两个数据集,delphi会自动绑定它们的对应关系。
      

  10.   

    我来说说啊,说起来好像比较复杂,但是其实很简单。
    一、窗体上放一个Ttable控件,Name属性为table1,设置好他的数据库相关参数(databasename,tablename两个属性)。
    二、窗体上放一个tdatasource控件,设置它的dataset属性为ttable1.
    三、窗体上再放一个Ttable控件,Name属性为table2只要设置它的Mastersource属性为datasource1,并且设置它的MasterFields(双击),添加相关联的字段。
    四、再放一个tdatasource控件,设置它的dataset属性为ttable2.
    五、放一dbgrid控件,设置datasource为datasource1
    六、再放一dbgrid控件,设置datasource为datasource2,
    七、把Table1控件的ACTIVE设置为TRUE.
      

  11.   

    to  zhwei_wen(GoldStone)
    可是我没有用到Ttable控件
      

  12.   

    为什么要把问题考虑得那么复杂呢?
    我觉得在dbgrid1的点击事件里根据系统名的条件对dbgrid的select进行过滤,不就得到这种效果了吗?
      

  13.   

    谢谢大家,问题基本解决了,我想再问一下,如果再加一个dbgrid3,让dbgrid1可控制dbgrid2和dbgrid3,dbgrid2控制dbgrid3,为什么我控制dbgrid1时,dbgrid2改变,dbgrid3不改变呢?
      

  14.   

    我也想是在dbgrid1中用点击事件来解决,但是怎么样才能解决其查询比较呢?试过几次但没什么效果望指导~~~
      

  15.   

    指定系列名的对应的数据集的MasterSource为系统名的Source,然后指定关联字段,方便些
      

  16.   

    添加两个Table
    Table1系统Table2列表
    Table2.MasterSource:=DataSource1;
    点Table2的MasterFields属性设置主键关联