我用了2个ADOQuery 2个TfrDBDataset 
ADOquery1主表sql  select * from staff (staffid为主键)
ADOquery2从表sql  select * from study (staffid 引用主笔的)
每个ADOquery 绑定到TfrDBDataset 上面。在fastreport里面用master 放主表数据
用detail 放从表数据。(主表的)
姓名    staffid  
aa      1
(从表的)
类型    staffid
.net    1
java    2
(主表的)
姓名    staffid  
aa      2
(从表的)
类型    staffid
.net    1
java    2
我现在想如果主表是staffid是1的话。在从表出现的数据也是staffid 为1的数据。
如果主表的staffid为2的话。从表的数据staffid 为2的数据。
现在出现的是从表所有的数据都出现了。

解决方案 »

  1.   

    从表sql要有一个参数指向主表的主键
    select * from study where staffid = :staffid
    还要设置主从表间的datasource关联
      

  2.   

    什麽意思?
    不懂。select * from study where staffid = :staffid 
    這個在那裡寫啊?寫了參數在那裡傳。
    设置主从表间的datasource关联
    這個怎么弄?
      

  3.   

    肯定是你的主从关心没有设定好。
    “select * from study where staffid = :staffid”
    就是强制从表显示与主表对应的内容,当然也可以使用过滤。
      

  4.   

    ADOquery1主表sql  select * from staff (staffid为主键) 
    ADOquery2从表sql  select * from study (staffid 引用主笔的) 
    每个ADOquery 绑定到TfrDBDataset 上面。 你这样的作法,实质上没有主从关系的,只是强制性的指定fr打印显示的内容,跟主从表没有关系。正确的主从表设定后,在dbgrid上点选主表的条目后,从表就自动过滤与之相对应的明细了。
      

  5.   

    今天要出差,趁着这个时间我做了一个demo,你自己下载看看把,看清楚数据库的主从关系设置,和程序中的主从关系设置。使用delphi2009编译http://www.gpepower.com/test01.rar