第十九章 data report 报表生成器 1.建立一个简单的报表 例:为score01.mdb数据库的“成绩单”输出成报表。(ch19\练 习1.vbp) 1)首先添加一个dataenvironment到工程中去,让connection连接到stock01.mdb。再添加一个command对象,选定数据表:股票行情表。 2)添加一个data report到工程 中。一开始data report 的结构图如下:(含有五个区域,每一个区域是一个对象) 3)利用属性窗口设置data report对象的属性: datasource=dataenvironment名 datamember=command名 4)从data environment之中拖动command对象到data report “细节”区域中。
5)在窗体上放置一个命令按钮,并且在命令按钮里面输入如下代码: datareport1.show 2.预览报表窗口的相关操作 3.修改报表 1)报表专用控件: Rptlabel:显示静态文字 RpttextBox:显示数据记录的字段数据 下面是工具箱中可供data report使用控件。 Rptlabel:用来显示静态文字 RpttextBox:用来显示字段数据 Rptimage:用来显示静态图片 Rptline:用来绘制静态直线 Rptshape:用来绘制静态图形
RptFuntion :用来显示总计字段 2)报表各区域的角色 细节:datareport将这个区域视为重复性数据的显示区。如果在这个区域放置了RptTextBox控件,则datareport就会根据RptTextBox控件所设置的datafield属性,逐笔读取command对象中的数据记录,然后一条一条显示出来。如果所放置的控件是RptLabel,则只是将该控件重复地显示在这个报表上。 页标头:此区域会被data report用来显示每页的标头信息。一般来说,用来显示字段的标题最为恰当。 页注脚:这个区域 会被 data report 用来显示每页的注脚信息,其显示方式与“页标头”区域相同,唯一的差异是它会被 显示在注脚的位置。
报表标头、报表注脚:在每一份报表被输出时,放置在“报表标头”区域的控件,只会显示在报表“第一页”的最前面,不像放置在“页标头”区域的控件会显示在报表“每一页”的最前面,至于放置在“报表注脚”区域的控件,则只哙 显示在报表“最后一页”的最后面。 例:修改上一例中“股票行情表”的报表。 3)插入页数及日期 在上一例中,要在“报表标题”中插入日期,要在“页标题”中插入页数。 步骤:在“报表标题”区域中右击,在快捷菜单中选“插 入控件”/“报表标题”。则在“报表标题”区域中出 现“i%”。 在datareport_Initialize()事件中写下代码如下: DataReport1.Title = "股票行情表"
在“报表标题”区域中右击选择“插入控件”/“当前日期” 在“页标题”区域中右击选择“插入控件”/“当前页码” 4)如何将字段数据设置成靠右对齐。 将rpttextbox中的alignment属性设为: rptjustifyright(=1) 5)如何设置数值字段的小数点位数 将rpttextbox中的dataformat属性进行设置。 6)如何让字段数据自动换行 有时候调整字段的宽度也是比较麻烦的,设置得太长,会超出纸张的宽度,设置得太短,怕出现数据被截断的现象,解决的办法是:将rpttextbox控件的cangrow属性设置为true。凡超过右边区的数据,都会自动换到下一行。 7)如何避免同一条数据记录被分开打印。 在一个可以自动换行的字段中,可能会出现同一条
被分开打印,如果我们不想同一条记录被分开打印,则要将“细节”对象的keeptogether属性设为true。 8)如何将“报表标头”设置成封面。 只要将“报表标头”对象的forcepagebreak属性设置为“2-rptpagebreakafter”既可。其作用是在“报表标头”之后强制分页。 除了“报表档头”对象之外,其他区域对象也都含有forcepagebreak属性,forcepagebreak几个属性值的意义如下: 属性值 意义 rptpagebreaknone(=0) 这个区域前后均不强制分页 rptpagebreakbefore(=1) 这个区域之前要强制分页 rptpagebreakafter(=2) 这个区域之后要强制分页 rptpagebreakbeforeandafter(=3) 这个区域前后均强制分页 9)如何调整个区域的高度 不必设置任何属性,只要将鼠标移到区域的边界,按下鼠标拖动即可。
10)如何设置报表的边界 就是要设置datareport对象的leftmargin(左边界)、rightmargin(右边界)、topmargin(上边界)和bottommargin(下边界)属性。这几个属性的单位twip,而twip与厘米(或英寸)的换算公式为: 1twip=1/1440英寸 1twip=1/567厘米 4.建立层次式的报表 前面利用dataenvironment的分组统计功能,完成如下画面如下: 例:为第十七章练习八添加具有层次型打印功能(ch16\ex11.vbp)