1、关于帐票的经验总结,二年级组全体成员(范春雨、段小光、史长锐、刘林平、赵丽丽、侯宝嘉),一 怎么样画好一张帐票,首先我们来看一张最简单的帐票,帐票的基本布局,第部分为固定的部分,我们称为头部 下面的部分由直线分开,两条直线之间就是一条记录了,我们发现每一条记录结构都是相同的,这样称这部分为明细部 头部对应的画到帐票的PageHeader部,而明细部我们把它画到Detail部分,这样我们画帐票画的部分就完成了 注意:别看这么简单,有些帐票是很严格的(例如请求书,这可是要给客様看的),位置差一点也是一个严重的bug,这时候就需要我们非常认真和细心了。调节控件的对齐方面,工具栏中書式整列是非常有用的
2、工具。,一个相对复杂的例子,分 析,根据分析,要根据日期合计,这样要做一个分组日计部分因为要从数据库表中取所以我们要做一个子账票组织好结构后我们就可以画帐票了,二 帐票的常用功能,分组 子帐票,分 组,合计的时候用到分组 如下图所显示的帐票就需要做两次合计:小组合计和总计,这些都需要对帐票进行分组,也就是添加group,分组时经常用到的属性,分组的方法是在添加的group上设置dataField属性,这个属性设置成想要分组的列的名字就可以了,如下图,NewPage属性,Before A变成B之前换页 After A变成B之后换页,用After的话,B的第一条纪录还是会打印在当前页。,Repea
3、tStyle属性,OnPage 表示这个GroupHeader每一页都要显示 OnColumn 表示这个GroupHeader在每一列都要显示 All 换页换列时都会印刷Groupheader/groupfooter里的内容,合计的表示,1、在每一页的上面合计一页的数据,在PageHeader中添加上金额合计控件为图中红色部分,在金额合计控件的属性上设置DataField属性为要合计的列的值,这个属性是指定要合计的列,设置SummaryType这个属性,选择PageTotal,2、在每一组的上面计算这个组某一列的合计,在GroupHeader中添加要计算合计的控件,分别设置金额合计控件的Sum
4、maryGroup属性为这个组的组名,和SummaryType属性为SubTotal,组的合计的值可以显示在一组的后面,也可以显示在一页的最下面,设置合计所在的GroupFooter的PrintAtBottom属性为true即可,合并相同项目,有的帐票需要同一组数据的第一列和第二列完全相同的数据不显示出来,在帐票中添加group然后把相同不显示的控件添加到GroupHeader中,然后再这些控件的DataField中设定上要显示的列就可以了.其他属性都不需要设置,并排打印,设置如下:,KeepTogether=true不允许有一页半行的显示,如果有半行的话,就自动换到下一页显示了,子 帐 票,
5、一般在看起来比较复杂、没有办法用一个帐票实现或者实现起来比较麻烦的帐票中,一般会用到SubReport。 SubReport可以放在PageHeaer/Footer,GroupHeader/footer和Detail上,这个要视用途来定。如放在Detail中需要在Detail_Format事件中,并且给SubReport设置数据源。例: Private Sub Detail_Format(ByVal sender As Object, ByVal e As System.EventArgs) Handles Detail.Format Dim rpt As New sub1(dt) Me.su
6、bReport1.Report=rpt End Sub,子帐票中需要注意的问题,SubReport画在MainRep的哪个部分,就应该在哪个部分的事件里对SubReport进行设置与传值。 为了SubReport与MainRep能同步分页,最好是能在整理数据时,为MainRep的数据与SubReport的数据设置一个相同的Flg来控制分页的问题。 SubReport中的PageHeader和PageFooter是不起作用的。 SubReport控件的Width必须设成和实际要打印的SubRep.rpx的width一样大,否则SubRep.rpx的内容将不能完全显示出来。,常用分栏帐票印刷,该类
7、型帐票有如下特点,分栏帐票的特点是各栏的样式基本相同,只是其中的数据会有所变化。 分栏帐票的各栏可以是衔接在一起的,即栏间距为0,也可以是分开的。 Title和SubTitle通常是不分栏的,它们会跨越所有的栏。 帐票的默认栏数应该是固定的,比方说A4纸默认印刷8栏,如果超过8栏可以选择换页,也可以选择超出边界继续印刷(红线)。 这是由代码来控制的。,具体解决方法,首先在调用帐票前,组织好数据源,在数据源里要分别存在:分页用的Flg(Row_Flg)和分栏用的Flg(Col_Flg),来控制分页和分栏。 在帐票中加入两个GroupHeader,一个用于分页:DataField设置成Row_Flg,NewPage设置成Before。、另一个用于分栏:DataField设置成Col_Flg,NewColumn设置成Before。 Title和SubTitle通常是不分栏的,它们会跨越所有的栏。 Detail的ColumnCount设置成要分的栏数。 ColumnLayout是分栏帐票中一个很重要的属性,当ColumnLayout设置为True的时候,GroupHeader/GroupFooter将与Detail一起换栏,当设置成False时GroupHeader/GroupFooter将跨越所有栏。,