ActiveReports工作总结6——使用子报表
来源:互联网 发布:php图片验证码代码 编辑:程序博客网 时间:2024/06/06 19:13
本节目标:
承接上节,上节用2个group的方式打印了普通的分栏帐票。实现了换列换页的三维表示。
本节用子报表的方式来实现该功能。
子报表的功能比上面那个方法来说,更强大,更灵活。复杂帐票一般都得用到子报表。
开始之前,先简单介绍一下子报表的用法。
0,子报表的一般用法如下:
(1),先Add一个主模版(rpt1.rpx),若干子模版(这里就建了一个,sub1.rpx)
(2),在主模版上放一个SubReport控件(该控件是一个占位符,sub1.rpx的内容将在这里显示),可以放在PageHeaer/Footer,GroupHeader/footer和Detail上,这个要视用途来定。这里放在GroupHeader1上。
(3),在主模版的GroupHeader1_Format事件(假如你的SubReport放在Detail中,就要用Detail_Format事件了)中,加入代码,生成子报表,并且给子报表设置数据源(这里为简单起见没有设置数据源):
Dim rpt As New sub1()
Me.subReport1.Report = rpt
End Sub
(4),然后就可以设计你的子报表了,加控件,加代码,和操作主模版一样做法。需要说明的是,子模版中的PageHeader和PageFooter是不起作用的。
(5),然后御览,你会看到每页都包含的sub1.rpx的内容。假如你把SubReport控件放在Detail中的话,Detail中的每一行显示,都会把sub1.rpx的内容一起显示出来。
ok,正式开始了
1,先准备如下数据(把数据顺序组织成如下形式):
A
Chinese
1
Tony
100
A
Chinese
2
Mary
56
A
Chinese
3
Tom
76
A
Chinese
4
John
67
A
Chinese
5
Li
54
B
Chinese
6
Zhang
3
B
Chinese
7
Wang
100
B
Chinese
8
Gong
23
B
Chinese
9
Tian
78
B
Chinese
10
Jack
87
B
Maths
6
Zhang
0
B
Maths
7
Wang
2
B
Maths
8
Gong
56
B
Maths
9
Tian
99
B
Maths
10
Jack
88
2,创建一个AR主模版,1个子模版:
主模版(rpt1.rpx):
GroupHeader1中:
GroupHeader1:DataField=”Class”
NewPage=”before”
ClassNo: DataField=”Class”
SubReport控件:需要注意的是,该控件的Width必须设成和实际要打印的Sub1.rpx的width一样大,否则sub1.rpx的内容将不能完全显示出来。后面我会专门讲解一下如何在代码中控制各控件width.
子模版1(sub1.rpx)
GroupHeader1: DataField=”Subject”
NewColumn=”Before”
Subject: DataField=”subject”
Detail: ColumnCount=2
TextBox: Datafield=”ID”
TextBox2:Datafield=”Name”
TextBox3:DataField=”Score”
3,在form的load事件中编写如下代码,把数据源传给模版,并显示模版:
4,在rpt1.rpx的GroupHeader1_Format事件,编写代码,显示子模版sub1.rpx.。
注意了我这里传给子模版的数据源。
当打印第一页时,我传给子模版的数据源是:
A
Chinese
1
Tony
100
A
Chinese
2
Mary
56
A
Chinese
3
Tom
76
A
Chinese
4
John
67
A
Chinese
5
Li
54
当打印Class=B的第二页时,我传给子模版的数据源变成了:
B
Chinese
6
Zhang
3
B
Chinese
7
Wang
100
B
Chinese
8
Gong
23
B
Chinese
9
Tian
78
B
Chinese
10
Jack
87
B
Maths
6
Zhang
0
B
Maths
7
Wang
2
B
Maths
8
Gong
56
B
Maths
9
Tian
99
B
Maths
10
Jack
88
5,ok,御览看看效果吧。搞定收工。
Dim sub1 As New sub1()
Me.subReport1.Report = sub1
'為子報表設置数据源
Dim dv As DataView = New DataView(CType(Me.DataSource, DataTable), "Class='" & Me.Fields("Class").Value.ToString & "'", "", DataViewRowState.CurrentRows)
Me.subReport1.Report.DataSource = dv
End Sub
Dim conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Persist Security Info=False"
Dim cmd As String = "Select * from table1 order by ID"
Dim adapter As New OleDbDataAdapter(cmd, conn)
Dim ds As New DataSet
adapter.Fill(ds)
Dim rpt As New rpt1
rpt.DataSource = ds.Tables(0)
rpt.Run()
Me.Viewer1.Document = rpt.Document
End Sub
- ActiveReports工作总结6——使用子报表
- ActiveReports工作总结6——使用子报表
- ActiveReports工作总结12——用Designer控件实现用户自定义报表印刷
- ActiveReports工作总结12——用Designer控件实现用户自定义报表印刷
- ActiveReports工作总结1——AR简介
- ActiveReports工作总结2——数据源绑定
- ActiveReports工作总结4——换页打印
- ActiveReports工作总结1——AR简介
- ActiveReports工作总结2——数据源绑定
- ActiveReports工作总结4——换页打印
- ActiveReports工作总结9——打印参数设置
- ActiveReports工作总结1——AR简介
- ActiveReports工作总结2——数据源绑定
- ActiveReports工作总结4——换页打印
- ActiveReports工作总结9——打印参数设置
- 使用ActiveReports for .net 进行报表开发(五)—交叉报表
- 使用ActiveReports for .net 进行报表开发(五)—交叉报表
- 使用ActiveReports for .net 进行报表开发(五)—交叉报表
- ActiveReports工作总结3——换列打印
- ActiveReports工作总结4——换页打印
- choke.exe
- cidaemon.exe
- ActiveReports工作总结5——常用分栏帐票印刷
- ActiveReports工作总结6——使用子报表
- ActiveReports工作总结7——常用一览表印刷
- cij3p2ps.exe
- cisvc.exe
- ActiveReports工作总结8——用代码控制布局
- cleanup.exe
- ActiveReports工作总结9——打印参数设置
- cli.exe
- 师者 传道授业解惑也