当前位置:文档之家› vb报表设计

vb报表设计

第六节报表设计对一个完整的数据库应用程序来说,制作并打印报表是不可缺少的环节。

VB 6.0 提供了DataReport 对象作为数据报表设计器(DamReport designer),DataReport对象除了具有强大的功能外,还提供了简单易操作的界面。

DataReport对象可以从任何数据源包括数据环境创建报表,数据报表设计器可以联机查看、打印格式化报表或将其导出到正文或HTML页中。

一、报表设计器数据报表设计器由DataReport对象、Section对象和DataReport控件组成。

1.DataReport对象DataReport对象与VB的窗体相似,同时具有一个可视的设计器和一个代码模块,可以使用设计器创建报表的布局,也可以在代码模块中添加代码。

在“工程”菜单上,单击“添加DataReport”命令,将数据报表设计器添加到工程中,则出现如图5-6-1所示的DataReport1对象,由“报表标头”、“页标头”、“细节”、“页注脚”和“报表注脚”组成。

图5-6-1·报表标头:指显示在一个报表开始处的文本,例如用来显示报表标题、作者或数据库名。

·页标头:指在每一页顶部出现的信息,例如用来显示每页的报表标题。

·分组标头、注脚:指数据报表中的“重复”部分。

每一个分组标头与一个分组注脚相匹配,用于分组。

·细节:指报表的最内部的“重复”部分(记录),与数据环境中最低层的Command 子对象相关联。

·页注脚:指在每一页底部出现的信息,例如,用来显示页码。

·报表注脚:指报表结束处出现的文本,例如,用来显示摘要信息或一个地址或联系人姓名。

报表注脚出现在最后一个页注脚之前。

2.Section对象数据报表设计器的每一个部分由Section对象表示,如图5-6-1中的Section1~Section5。

设计时,每一个Section由一个窗格表示,可以单击窗格以选择页标头,编程改变其外观和行为,也可以在窗格中放置和定位控件,对Section对象及其属性进行动态重新配置,更改每一个Section对象的布局来设计报表。

3.DataReport控件当一个新的数据报表设计器被添加到工程时,在窗体上控件箱出现“数据报表”和“General”(通用)选项卡,如图5-6-2所示。

但在数据报表设计器上不能使用General的控件,即内部控件或ActiveX控件。

数据报表选项卡中的控件仅包含可在数据报表设计器上工作的特殊控件。

图5-6-2数据报表选项卡有下列控件:·TextBox控件(RptTextBox):文本框用于在报表上设置规定文本格式,或指定一个DataFormato。

·Label控件(RptLabel):用于在报表上放置标签、标识字段或Section。

·Image控件(RptImage):用于在报表上放置图形,该控件不能被绑定到数据字段。

·Line控件(RptLine):用于在报表上绘制直线,可用于进一步区分Section。

·Shape控件(RptShape):用于在报表上放置矩形、三角形或圆形(椭圆型)。

·Function控件(RptFunction):是一个特殊的文本框,用于在报表生成时计算数值。

Function 控件不像TextBox控件那样直接绑定到记录集上。

二、设计报表用数据报表设计器设计一个定单明细表,利用dbBook.mdb中的四个数据表,输出每个客户的定单信息,即每个客户订购的图书数量、书名和书号。

为了更具有实用性,在Books(图书信息表)和Bookitems(订购图书信息表)中添加“单价”字段,这样在报表中可以对客户订购的金额进行汇总。

1.指定数据源首先配置一个数据源,可以用数据环境(DamEnvironment)作数据源。

①在“工程”菜单上,单击“添加Data Environment”向工程中添加一个数据环境设计器对象(denBook)。

②设置“连接”属性为“dbbook.mdb”,Connection对象名为“cnnBook”。

添加Command命令“cmmCust”。

用右键单击“cmmCust”,在快捷菜单中选择“属性”命令,打开属性页。

在“通用”选项卡中选择“Customers”表。

③在快捷菜单中选择“添加子命令”,添加“cmmBook”命令,在属性页的“通用”选项卡中选择“SQL语句”,单击“SQL生成器”按钮,则出现如图5-6-3所示的查询设计窗口。

图5-6-3设计由Orders、Books和Boohtems表组成的查询记录集,设计查询的步骤如下:①打开“数据视图”窗口,如图5-6-4所示。

将Orders、Books和Bookitems表拖放到查询设计窗口中。

图5-6-4②通过单击Orders的“定单号”并拖放到Books的“定单号”来建立关联,并将Books的“书号”和Bookitems的“书号”关联。

单击要显示的字段,包括“定单号”、“客户号”、“书号”、“书名”、“数量”和“单价”。

单击鼠标右键,选择“运行”命令,在查询设计窗口中显示SQL语句和满足条件的记录,如图5-6-5所示。

图5-6-5③关闭查询设计窗口,出现保存对话框,将查询保存为cmmBook,则生成的数据环境设计器如图5-6-6所示,由两个Command对象:cmmCust和cmmBook。

图5-6-6④在数据环境设计器窗口中用鼠标右键单击cmmBook,在快捷菜单中选择“属性”,选择“关联”选项卡,单击“添加”按钮,如图5-6-7所示。

图5-6-7单击“确定”按钮,则完成了cmmBook对象的创建。

2.将数据报表设计器添加到工程中在“工程”菜单上,单击“添加Data Report”命令,将数据报表设计器添加到工程中,则出现未设计的DataReportl对象。

如果设计器不在“工程”菜单上,在控件箱用鼠标右键单击“部件”选择“设计器”命令,并在选项卡中单击“Data Report”把设计器添加到菜单上。

3.设置DataReport对象属性在属性页设置DataReport对象的属性,将Name属性设置为“rptBook”;设置DataSource 属性为数据环境对象“denBook”;设置DataMember属性设置为“cmmCust”命令。

4.检索结构在rptBook上单击鼠标右键,选择“检索结构”命令,出现对话框“用新的数据层次代替现在的报表布局吗?” ,单击“是”按钮,将向报表设计器添加新的分组,分组与数据环境中的cmmCust 命令对象有“一对一”的对应关系。

5.添加控件·在页标头(PageHeader)下,从控件箱中选择RptLabel控件,将Caption属性设置为“客户定单明细”;·从数据环境设计器中拖放“客户号”、“客户姓名”和“客户地址”字段到分组标头(cmmCusto_Header),则自动出现标签和文本框。

文本框的DataMember和DataField 属性自动为“客户号”、“客户姓名”和“客户地址”的Command和Field对象,然后将标签都删除;·从数据环境设计器中将“定单号”、“书名”、“数量”和“单价”字段拖放到细节(cmmBook_Detail),将所有的标签拖放到分组标头,文本框仍放置在细节。

6.设置布局·设置rptBook属性的“GridX”和“GridY”都为5;·设置各控件的布局,将分组标头中的标签与细节中相应的文本框对齐,将标签的“BorderStyle”属性设置为1,并设置字体大小;·使用控件箱中的RptLine在分组注脚(cmmCustomers Footer)添加一直线。

在页标头标签添加两条直线;·调整细节部分的高度,使它尽可能的窄,因为细节的高度是同一客户的每一定单之间的距离,避免不必要的空间,如图5-6-8所示。

图5-6-87.运行显示数据报表有两种方法可以显示数据报表:(1)在“工程”菜单中选择“属性”命令,将“启动对象”设置为rptBook,运行显示数据报表。

(2)使用程序代码显示数据报表,在“工程资源管理器”窗口,双击“form1”窗体图标,并窗体上放置一个按钮cmdShow。

按钮的Click事件代码如下:Private Sub cmdShow_Click()rptBook.ShowEnd Sub在运行时单击“form1”窗体中的cmdShow按钮,显示报表,如图5-6-9所示。

图5-6-9三、向报表添加Function控件数据报表设计器的控件箱中,Function控件使用各种内置函数,在报表生成时显示运行计算结果,一般放置在注脚部分。

Function控件仅在分组内的所有记录都被处理后,才可以计算值。

SQL语句则可以在记录处理时作为一个计算字段。

因此,Function控件只能被放置在比所计算数据层次高一级的部分中,例如,被放置在报表注脚中,此时Function控件的计算范围扩大到整个报表。

Function控件包含的函数如表5-6-1所示。

表5-6-1函数名功能Sum 合计一个字段的值Min 显示一个字段的最小值Max 显示一个字段的最大值Average 显示一个字段的平均值Standard Deviation 显示一列数字的标准偏差Standard Error 显示一列数字的标准错误Value Count 显示包含非空值的字段数Row Count 显示一个报表部分中的行数1.向数据报表设计器添加一个Function控件的步骤①在数据报表设计器的一个适当的注脚部分绘制一个Function控件。

②设置DataMember和DataField属性为来自数据环境Command对象的一个数值字段。

2.报表中添加显示某个客户订单总金额的步骤:①在cmmBook的查询中添加一个别名为“合计金额”字段用于计算该客户的总金额,在图5-6-2中的查询设计窗口添加字段,在“列”栏中输入“Books.数量*Books.单价”,在“别名”栏输入“合计金额”。

运行该查询后,在cmmBook对象就增加了“合计金额”字段。

如图5-6-10。

图5-6-10②从数据视图中拖动“合计金额”字段,放置在数据报表设计器窗口的“cmmBook_Detail”中,并安排布局。

如图5-6-11。

图5-6-11③在报表设计器窗口中的“cmmCust_Footer”部分绘制一个Function控件,Function控件的属性如表5-6-2所示。

在Function控件的左边放置一个Label控件,Caption属性设置为“合计:”。

表5-6-2属性设置值Name FncTotalDataMember cmmbookDataField 合计金额Font(Font Style) BoldFunctionType 0-rmFuncSum④保存并运行,当单击“form1”窗体中的“显示报表”按钮时,如图5-6-12所示。

相关主题