ActiveReports工作总结4——换页打印

    技术2022-05-11  61

    首发在http://batoosai.cnblogs.com 有疑问可以在哪里讨论 环境:

    vs2005+ActiveReportsNet2

      本节目标:

    有如下数据源 最终希望打印成如下(按班级进行分页):

     

     

     

     

    1,先准备如下数据:

     

     

     

     

    2,创建一个AR模版,大致布局与控件如下图:

    GroupHeader中放入一个TextBoxCurrentClass,该控件希望显示当前页打印的ClassDataField邦定字段”Class”

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

    PageFooter2TextBox,分别用来显示当前page和总page.

     

     

    3,在formload事件中编写如下代码,把数据源传给模版,并显示模版:

         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  

    4,运行程序,帐票将被打印出来。

     

     

    5,恩,帐票还没有按Class分页,看过前面一篇换列的文章的话,应该很容易就想到怎么换页了。

    ok,点中Groupheader1,修改如下属性:

    DataField:改成Class,恩,我们是根据Class字段换页的,一旦数据源中的Class发生了改变,马上就强制换页。

    NewPage:改成BeforeBeforeA班变成B班之前换页;AfterA班变成B班之后换页。用After的话,B班的第一条纪录还是会打印在当前也,大家可以试试)

     

     

     

    6ok,御览看看效果吧。

     

     

    7,大致完成了,PageFooter中的页码还没完成

    修改这2textbox的属性:

    CurrentPage:

     

    TotalPage:

     

    这是AR的统计功能,比如可以对当前页面上的人数做统计,对当前页面上的金额作统计,这个后面再讲。

     

    这里就用到了简单的PageCount统计。

    第一个TextboxSummaryRunning设置成All,是指每打印一张page,就统计一下当前的pagesum

    第二个Textbox设置成none,就是只统计到最后一页的pagesum

     

     

    8,最后的结果,目标达成了


    最新回复(0)