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