環境:
vs2005+ActiveReportsNet2
AR下載地址:ftp://FTP.datadynamics.com/
本節目標:
有如下數據源
最終希望打印成如下(按班級進行分頁):
1,先准備如下數據:
2,創建一個AR模版,大致布局與控件如下圖:
GroupHeader中放入一個TextBox:CurrentClass,該控件希望顯示當前頁打印的Class。DataFIEld邦定字段”Class”
Detail section 中放3個Textbox,分別邦定字段”Class”,”ID”和”Name”(修改他們的DataFIEld屬性)
PageFooter放2個TextBox,分別用來顯示當前page和總page.
3,在form的load事件中編寫如下代碼,把數據源傳給模版,並顯示模版:
4,運行程序,帳票將被打印出來。
5,恩,帳票還沒有按Class分頁,看過前面一篇換列的文章的話,應該很容易就想到怎麼換頁了。
ok,點中Groupheader1,修改如下屬性:
DataFIEld:改成Class,恩,我們是根據Class字段換頁的,一旦數據源中的Class發生了改變,馬上就強制換頁。
NewPage:改成Before(Before:A班變成B班之前換頁;After:A班變成B班之後換頁。用After的話,B班的第一條紀錄還是會打印在當前也,大家可以試試)
6,ok,御覽看看效果吧。
7,大致完成了,就PageFooter中的頁碼還沒完成
修改這2個textbox的屬性:
CurrentPage:
TotalPage:
這是AR的統計功能,比如可以對當前頁面上的人數做統計,對當前頁面上的金額作統計,這個後面再講。
這裡就用到了簡單的PageCount統計。
第一個Textbox把SummaryRunning設置成All,是指每打印一張page,就統計一下當前的page的sum
第二個Textbox設置成none,就是只統計到最後一頁的page的sum。
8,最後的結果,目標達成了
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
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