zt:用RAVA做主从关系报表

来源:互联网 发布:手机怎么做淘宝 编辑:程序博客网 时间:2024/06/02 04:31
用RAVA做主从关系报表

 

-----------------------------------------------------------------------------------------------------------

参考资料

1.在窗体上加RvProject1,RvSystem1,

  RvProject1.Engine:=RvSystem1

  RvProject1.LoadDesigner:=False

  RvProject1.ProjectFile:='C:/MyRave/Project1.rav' 

2.在datamodule1中加table1,table2,RvTableConnection1,RvTableConnection2,

  table1连上DBDEMOS数据库的 表customer[主表],table2连上DBDEMOS数据库的 表orders[从表]

3.设table2.filteroptions:=[foNoPartialCompare],

  RvTableConnection1:

  RvTableConnection1.Runtimevisibility:=rtEndUser

  RvTableConnection1.table:=table1

  RvTableConnection2.Runtimevisibility:=rtEndUser

  RvTableConnection2.table:=table2

4.在Page1:Page Component的属性页上设

  Page1.bin:=Middle Tray

  Page1.PagerSize:=Custom

5.在RaveReport的设计环境中

  加DataView1,Dataview1连RvTableConnection1

  加DataView2,Dataview2连RvTableConnection2

6.在RaveReport的设计环境中

  在page1上加Region1,Databand1,Databand2,在Databand1,Databand2上加数据显示控件

7.在Databand1,Databand2上设

  Databand1.dataview:=DataView1

  Databand2.ControllerBand:=Databand1

  Databand2.dataview:=dataview2

  Databand2.DetailKey:=Custno

  Databand2.MasterDataView:=dataview1

  Databand2.MasterKey:=Custno

8.设DataText控件

  DataText1.DataField:=custno

  DataText1.Dataview:=dataview1

  DataText1在databand1上

  DataText2.DataField:=custno

  DataText2.Dataview:=dataview2

  DataText2在databand2上 

9.设databand1,databand2

  在databand1的属性框上点击属性Bandstyle,会弹出对话框,选Print Occurrence下的First,New Page

  在databand2的属性框上点击属性Bandstyle,会弹出对话框,选Print Occurrence下的First,

  Print Location下的Detail

按上述步骤就可以做出一张主从报表

目前我知道的有两中做法:
第一
不要在前台设置硬性质的MastDetail,也就是说不要通过DataSet的MastSource属性来设置
要不然他死也不出来,前台通过在主表的DataSet的AfterScroll下面
动态过滤子表明细,使用filter,或者SQL查询不要用SetRange
报表格式设置通过放置两个DataBand,把明细表的DataBand的Controllerband
指向主表的DataBand,点BandStyle属性,钩上Detail;
第二
直接在报表中设置,前台不要任何代码,
上面步骤不变,下面设置MasterKey
masterKey为主表的Key,DataView
DetailKey为从表Key
但是不支持复合主键