ActiveReports工作總結4——換頁打印

環境:

vs2005+ActiveReportsNet2

AR下載地址:ftp://ftp.datadynamics.com/

 

 


本節目標:

有如下數據源
<!--[if !vml]--><!--[endif]-->

最終希望打印成如下(按班級進行分頁):

<!--[if !vml]--><!--[endif]-->

<!--[if !vml]--><!--[endif]-->

<!--[if !vml]--><!--[endif]-->

 

 

 

 

1,先準備如下數據:

 

 

 

 

2,創建一個AR模版,大致佈局與控件如下圖:

GroupHeader中放入一個TextBoxCurrentClass,該控件希望顯示當前頁打印的ClassDataField邦定字段”Class”

Detail section 中放3Textbox,分別邦定字段”Class”,”ID””Name”(修改他們的DataField屬性)

PageFooter2TextBox,分別用來顯示當前page和總page.

 

<!--[if !vml]--><!--[endif]-->

 

3,在formload事件中編寫如下代碼,把數據源傳給模版,並顯示模版:

 

4,運行程序,帳票將被打印出來。

<!--[if !vml]--><!--[endif]-->

 

 

5,恩,帳票還沒有按Class分頁,看過前面一篇換列的文章的話,應該很容易就想到怎麼換頁了。

ok,點中Groupheader1,修改如下屬性:

DataField:改成Class,恩,我們是根據Class字段換頁的,一旦數據源中的Class發生了改變,馬上就強制換頁。

NewPage:改成BeforeBeforeA班變成B班之前換頁;AfterA班變成B班之後換頁。用After的話,B班的第一條紀錄還是會打印在當前也,大家可以試試)

 

<!--[if !vml]--><!--[endif]-->

 

 

6ok,御覽看看效果吧。

<!--[if !vml]--><!--[endif]-->

<!--[if !vml]--><!--[endif]-->

 

 

7,大致完成了,PageFooter中的頁碼還沒完成

修改這2textbox的屬性:

CurrentPage:

<!--[if !vml]--><!--[endif]-->

 

TotalPage:

<!--[if !vml]--><!--[endif]-->

 

這是AR的統計功能,比如可以對當前頁面上的人數做統計,對當前頁面上的金額作統計,這個後面再講。

 

這裏就用到了簡單的PageCount統計。

第一個TextboxSummaryRunning設置成All,是指每打印一張page,就統計一下當前的pagesum

第二個Textbox設置成none,就是隻統計到最後一頁的pagesum

 

 

8,最後的結果,目標達成了

<!--[if !vml]--><!--[endif]-->



 

 

    Private Sub Form1_Load(ByVal sender As ObjectByVal 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
 
 
發佈了4 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章