连接两个表,DBGrid1连的是ADO_Query1主表 ,DBGrid2连的是连的是ADO_Query2从表
主表字段 ID 是主键,从表字段 ID 是外键, 主从表一对多关系ADOquery1.sql 里的内容是:select * from table1
ADOquery2.sql 里的内容是:select * from table2 where ID =: StrID
ADOquery2.Parameters.ParamByName('StrID').Value := ADOquery1.FieldByName('StrID').Value;DBGrid1里的记录移动的时候,DBGrid2也跟着显示相关的信息,请问这个该怎么实现?
我知道是在ADO_Query1 ,AfterPost和AfterScroll事件里写,但怎么做都实现不了,哪位大哥帮帮忙,详细点,把完整的代码贴上来,谢谢了

解决方案 »

  1.   

    主从表的显示1.如果是用AdoQuery来实现的话,那就在主表的ADO_Query1的AfterScroll事件中,
      重新刷新ADO_Query2的数据,或者干脆  ADO_Query2.Close();
    ADOquery2.Parameters.ParamByName('StrID').Value := ADOquery1.FieldByName('StrID').Value;
      ADO_Query2.Open();2.如果没有什么特别的需要,那就用TADOTable来代替ADO_Query2,
      设置好TADOTable的MasterSource 、MasterFields 设置这个的方法不用说了吧,大家都知道~~~
      

  2.   

    更正一下我发的贴,
    ADOquery2.Parameters.ParamByName('StrID').Value := ADOquery1.FieldByName('StrID').Value;这句应该改为
    ADOquery2.Parameters.ParamByName('StrID').Value := ADOquery1.FieldByName('ID').Value;
      

  3.   

    ADOquery2.Parameters.ParamByName('StrID').Value := ADOquery1.FieldByName('ID').Value;
    StrID不是数据库字段名,是变量来的
    我用这种方法做,出现如下错误信息:ADO_Apply2 : Parameter 'StrID' not found
    为什么啊?  StrID不是数据库字段名,是变量来的
      

  4.   

    ADOquery2.FieldByName('ID').value := ADOquery1.FieldByName('StrID').value;把这句话放到 adoquery1 的 AfterScroll事件里 
      

  5.   

    ADOquery1.sql 里的内容是:select * from table1
    ADOquery2.sql 里的内容是:select * from table2 where ID =: StrID
    adoquery2.datasource:=Datasource1;
    adoquery1.active:=true;
    adoquery2.adotive:=true;
      

  6.   

    >>>ADOquery2.Parameters.ParamByName('StrID').Value := ADOquery1.FieldByName('ID').Value;
    >>>StrID不是数据库字段名,是变量来的
    >>>我用这种方法做,出现如下错误信息:>>>ADO_Apply2 : Parameter 'StrID' not found
    >>>为什么啊?  StrID不是数据库字段名,是变量来的变量不能直接,写在''之中,要这样ADOquery2.Parameters.ParamByName(StrID).Value := ADOquery1.FieldByName('ID').Value;
      

  7.   

    这样table1关键字为Single_No 那么table2 也建一个非关键字Single_NoADOquery1.sql 里的内容是:select * from table1
    ADOquery2.sql 里的内容是:select * from table2 where Single=: Single_No 
    adoquery2.datasource:=Datasource1;这样就搞定了~~`没你想像的这么麻烦
      

  8.   

    做个记号,看有没有更好的办法,我的也是这样的情况,不过我的第二个从表用的adotable表,mastersource,masterfields就可以完成了
      

  9.   

    偶用的也是adotable表来实现的。