我现在是
ADOConnection1
ADOQuery1   Connection为ADOConnection1 select * from a
ADOQuery2   Connection为ADOConnection1  select * form b
RMDBDataSet1  DATASET为ADOQuery1
RMDBDataSet2   DATASET为ADOQuery2我的 RMGridReport1 报表里面要两个表 a b的数据 A为表的框架数据,B为表的具体数据。可是RMGridReport1只有一个DATASET,我怎么把两个都加进去?记得C#里面一个数据集里面可以有好几个表的比方说 DATASET1.A   DATASET1.B。

解决方案 »

  1.   

    放一个DataSource1,关联到ADOQuery1,然后ADOQuery2的MasterSource选择为DataSource1,设置好这两个数据集的主从数据集关系,然后让RMDBDataSet关联ADOQuery1。RM报表里面对应主数据区域和子数据区域。
      

  2.   

    不过我比较喜欢把从表数据LEFT JOIN进主表中,然后用RM的分组报表来达到明细效果。当然只能适用于简单情况。
      

  3.   


    不好意思啊。ADOQuery2没有找到MasterSource属性 adotable有的。
      

  4.   

    嗯,确实没有。你可以用一个DataSetProvider关联到这个ADOQuery,然后再用一个ClientDataSet关联到这个DataSetProvider,然后两个ClientDataSet就可以设置MasterSource了。当然是比较麻烦了。
      

  5.   

    RMReport有个OnGetValue 过程
    你可以用
    procedure TfrmProFixZhCx.RMReportGetValue(const ParName: String;
      var ParValue: Variant);
    begin
      inherited;  
      if Trim(ParName)='p_bdate' then  ParValue := adoqueryl.fieldbyname('a').Value; 
      if Trim(ParName)='p_bdate' then  ParValue := adoqueryl.fieldbyname('b').Value ;
          
    end;
    在报表里用[p_bdate]和[p_edate]取得相应的值。这样就取得主表框架的值,
    从表就RMGridReport1.DATASET:= RMDBDataSet2。
      

  6.   

    ReportMachine论坛
    http://rmachine.5d6d.com