第10章报表.ppt

上传人:本田雅阁 文档编号:3121929 上传时间:2019-07-13 格式:PPT 页数:79 大小:971.53KB
返回 下载 相关 举报
第10章报表.ppt_第1页
第1页 / 共79页
第10章报表.ppt_第2页
第2页 / 共79页
第10章报表.ppt_第3页
第3页 / 共79页
第10章报表.ppt_第4页
第4页 / 共79页
第10章报表.ppt_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《第10章报表.ppt》由会员分享,可在线阅读,更多相关《第10章报表.ppt(79页珍藏版)》请在三一文库上搜索。

1、1,第10章 数据报表的设计,2,10.1 数据环境设计器,数据库的数据管理及维护、数据的查询等工作,都会形成各种数据报表,并希望以打印预览的形式显示,或形成打印文档,可直接打印出来。所以数据报表是数据库应用程序中非常重要的部分。 数据报表设计器(Data Report Designer)是VB6.0新增的功能,和数据环境设计器 (Data Environment Designer)配套使用,能完成多种类型报表的设计,是高效的报表设计工具。 数据环境设计器(Data Environment Designer)是一个可视化的编程环境,可以在设计时创建数据环境及ADO对象。可以设置连接对象和命令对

2、象的属性值、编程响应ADO事件,也可以将数据环境设计器中的对象拖动到数据报表中来创建数据绑定控件。,3,10.1.1 数据环境设计器的创建,在使用数据环境设计器时,必须在工程中添加并引用Data Environment对象。 创建Data Environment对象有以下方法: 采用新建数据工程的方法 在已有工程中添加Data Environment对象的方法。 1新建数据工程 利用新建数据工程的方法,VB可以在工程中自动添加Data Environment对象和数据报表设计器(DataReport)对象。,4,新建数据工程的操作过程如下:,启动VB6.0,新建一个工程,或在VB6.0环境中执

3、行菜单:文件新建工程,打开新建工程对话框如图10-1,选择数据工程项,单击确定按钮,即可创建数据工程。,图10-1 在新建工程对话框中选择数据工程项,图10-2 数据工程的工程资源管理器窗口,5,此时观察工程资源管理器窗口,可见工程中除了含有 一个窗体(默认名称: frmDataEnv) 一个数据环境设计器(默认名称:DataEnvironment1) 一个数据报表设计器(默认名称:DataReport1)。 Visual Basic 6.0还在标准工具箱中自动添加了可以在数据工程中配合使用的 ActiveX控件:ADODC、DataGrid、DataList、DataCombo等。,6,2在

4、现有工程中添加数据环境设计器,在现有的标准工程中,也可以利用菜单命令添加数据环境设计器对象。操作方法如下: 执行菜单: 工程添加DataEnvironment 可以添加一个数据环境设计器(默认名称:DataEnvironment1)到本工程中。 创建数据环境设计器后,可以用它来创建Connection对象以建立对数据源的连接,创建Command对象以返回记录集;还可以拖动Command对象或Command对象的Field对象来创建报表。,7,10.1.2 连接对象(Connection),数据环境通过连接(Connection)对象与数据库发生联系,从而访问该数据库,因此利用数据环境建立到数据

5、库的访问,首先要创建Connection对象。 在一个数据环境设计器中允许创建一个或多个Connection对象,每个Connection对象代表一个与数据库的连接,可以连接到本地数据库或网络数据源。 在图10-2所示的 工程资源管理器 窗口中,双击数据环境设计器DataEnvironment1,可打开该设计器窗口,可见其中自动已有一个连接对象(默认名称:Connection1),可以将该连接对象连接到某个DSN数据源。,图10-3 数据环境窗口中添加连接对象,8,1添加连接对象,添加Connection对象的方法是:在图10-3所示的窗口中,鼠标右击数据环境设计器名称,在弹出的快捷菜单中,选

6、择添加连接项,即可添加一个新的连接(默认名称Connection2)。也可以在数据环境设计器窗口中单击工具栏中的添加连接 (图10-3中所示工具栏中的左边第一个) 按钮,添加一个新的连接对象。,9,2设置连接对象到数据源的连接,下面以连接到“成绩管理”数据库为例,介绍连接数据源的方法。 例10-1 将Connection对象连接到“成绩管理”数据库。 设计过程如下: (1)建立ODBC数据源 前边已经对“成绩管理”数据库配置了ODBC数据源,系统DSN名为cjgl 。 (2)为Connection1重命名 重命名是为了增强可读性,使人一看到该连接的名称就知道其所连接的是哪个数据库。操作方法是:

7、在当前数据环境设计器窗口中,右击连接对象Connection1,在弹出的快捷菜单中选择重命名命令,将连接的名称改为:ChengJiGL。,10,(3)连接数据源 数据环境设计器窗口中,右击连接对象ChengJiGL,在弹出的快捷菜单中选择属性命令,打开数据连接属性对话框。 在连接选项卡的1.指定数据源框中,选中使用数据源名称项,并在其下拉列表中选择数据源cjgl。 单击测试连接按钮,将显示“测试连接成功”提示信息框,然后单击确定按钮即可。,图10-4 连接数据源,11,10.1.3 命令对象(Command),完成了Connection与数据源的连接后,要想操作数据源中的数据,还要创建命令对象

8、(Command)。 命令对象可以基于数据库对象(如表、视图、存储过程)或者SQL查询,返回Recordset对象中的记录,也可以进行数据操作或处理数据结构。 在一个Connection对象中,可以建立多个Command对象,每个Command对象都要和Connection对象相联系,它具体定义了如何从Connection对象所连接的数据源中返回数据。,12,若一个Command对象返回数据,则称之为“记录集返回”,意为该命令从数据源中返回数据,可以通过DataEnvironment的Recordset对象访问这些数据。 若Command对象不返回数据,则称之为“非记录集返回”,表示该命令是一

9、个存储过程或执行诸如Insert Into、Update、Delete等动作查询的SQL语句,不立即返回记录集数据。 可以创建子命令对象,通过父命令和子命令对象之间的关系,来以层次结构的形式获取一组相关的数据。,13,1添加Command对象,添加Command对象的方法是:在数据环境设计窗口中,鼠标右击Connection对象名称,在弹出的快捷菜单中,选择添加命令项,即可添加一个新的命令对象(默认名称Command1)。 2为Command1重命名 右击Command1命令对象,在弹出的快捷菜单中选择重命名命令,将命令对象的默认名称Command1改为所需的名称 也可以在弹出的快捷菜单中选择

10、属性命令,打开属性对话框,在该对话框中更改命令的名称。 3设置Command对象的数据源 建立了命令对象后,要设置其数据源属性,使其返回不同的记录集或进行不同的操作。,14,例10-2 建立命令对象,返回课程信息表中的满足条件“学时=50”的所有记录。 建立另一个命令,返回学生信息表的所有记录。 设计过程如下: (1) 在例10-1的工程中,打开数据环境设计窗口,右击连接对象GhengJiGL,在快捷菜单中,选择添加命令,即可见该窗口中多了一个Command1对象。 (2)设置命令对象的属性: 右击Command1对象,在快捷菜单中,选择属性命令,即可打开属性对话框如图10-5。,图10-5

11、命令对象的属性对话框,15,在通用选项卡中,将命令名称Command1改为kecheng ; 在连接下拉列表框中选择连接对象名ChengJiGL; 选择数据源时,可以选择数据库对象,也可以选择SQL语句作为命令对象的数据源。 根据本题意,要求返回课程信息表中的满足条件“学时=50”的所有记录,应选择SQL语句选项,并在下边的文本框中输入SQL查询语句:“Select * From 课程信息表 Where 学时=50” 最后单击确定按钮即可。 完成命令对象的连接后,在数据环境窗口中展开命令对象kecheng节点,可以显示出该命令对象所包含的Field(字段)对象(如图10-6所示)。,图10-6

12、 建立的kecheng命令对象,16,建立另一个命令,返回学生信息表的所有记录。,若想返回一个表的所有记录,则可以在图10-5所示对话框中选中数据库对象选项,在其旁边的下拉列表中选择“表”,然后在下边的对象名称旁的下拉列表框中选择所要的表名称即可。 例如:在本例中再添加一个命令对象,返回学生信息表中的所有记录。操作过程如下: 在图10-6所示的数据环境窗口中右击连接对象GhengJiGL,在快捷菜单中,选择添加命令,即添加一个Command1对象。,17,右击Command1对象,在快捷菜单中,选择属性命令,打开属性对话框如图10-5。 在通用选项卡中,将命令名称Command1改为XueSh

13、eng; 确认连接对象名为ChengJiGL; 选择数据源时,选择数据库对象选项,在其旁边的下拉列表中选择“表”,然后在下边的对象名称旁的下拉列表框中选择“学生信息表”。 最后单击确定按钮,关闭属性窗口。此时在数据环境窗口中,可以看到新建立的命令XueSheng。,18,10.1.4 数据环境设计器的简单应用,用数据环境设计器可以创建数据窗体,数据报表、图表等,也可以对数据环境设计器所创建的ADO对象进行编程。 1从数据环境创建窗体 当设置好数据环境中连接对象及命令对象的数据源后,可以象其它数据控件一样,将数据绑定控件与其绑定,显示数据源的数据。 使用数据绑定控件创建数据窗体有两种方法: 通过

14、设置绑定控件的属性与数据源绑定; 也可以从数据环境设计器中直接拖动命令对象或字段对象到窗体上,快速地创建数据窗体。,19,例10-3 利用数据绑定控件创建课程信息显示窗体。,在例10-2的数据工程中的窗体上,添加5个标签控件,分别设置其Caption属性为课程信息表的各个字段的名:课程编号、课程名称、学时、学分、教师编号。 再添加5个文本框,分别用来显示各字段的数据,将其绑定到数据源的方法是: 设置DataSource属性为:DataEnvironment1 设置DataMember属性为:kecheng (即:命令对象的名称) 设置DataField 属性为:所要显示字段的名称。 将该窗体设

15、为启动窗体,运行程序,结果如图10-7所示。,20,例10-4 用拖动对象方法创建数据窗体。,在上例工程中,添加一个新窗体,名为Form1,Caption属性设为:课程信息。 打开数据环境设计器窗口,用鼠标选中命令对象kecheng,并按住鼠标左键,将命令对象kecheng拖动到窗体上。可以看到VB将自动在窗体上创建数据绑定控件,并自动设置DataSource属性、DataMember属性和DataField 属性,结果如图10-8所示。适当调整控件的大小,字体的属性等即可。 将该窗体设为启动窗体,运行程序,可见文本框控件中显示课程信息表的一条记录信息。,21,10.2 DataReport设

16、计器概述,数据报表设计器(Data Report Designer)是一种简单实用、功能较为齐全、高效的报表设计工具。 它和数据环境设计器(DataEnvironment)配套使用,不但可以形成一般形式的报表,而且还可以设计分组报表及多种复杂格式的报表。 报表设计主要包括数据源连接和报表的布局两项工作。 报表的数据源可以通过数据环境设计器进行连接,而报表的布局可以通过在数据报表设计器中,用鼠标拖动的方法进行设计。,22,10.2.1 DataReport设计器介绍,1创建数据工程 在 “新建工程”对话框中,选择数据工程,可在 工程资源管理器窗口中看到: 一个DataEnvironment1、一

17、个DataReport1和一个窗体名为frmDataEnv 也可以在现有的工程中添加DataEnvironment 和DataReport,操作如下: 执行菜单工程添加DataEnvironment 执行菜单工程添加DataReport 在工程资源管理器窗口中,双击DataReport1, 打开报表设计器,如图10-13所示。,图10-13 DataReport的基本分区,23,2 DataReport 的各分区的功能,(1)报表的基本分区 DataReport1基本分区有:一个页标头区、一个细节区、一个页注脚区(见图10-13)。 页标头/页注脚区: 页标头和页注脚出现在每页的顶部和尾部。相

18、当于页眉和页脚。 页标头:可用来显示报表的名称、当前页的内容,及“续表”等。 页注脚:可显示当前页码 和总页数等。 细节区: 是报表的数据区,显示记录的数据的详细信息。 细节区紧接着分组标头或页标头,区域长度可伸缩,有多少记录就显示多少行。,24,(2)DataReport 的更多的分区 为显示DataReport的所有区域,可操作如下: 1)在DataReport窗口上右击鼠标,在快捷菜单上选择显示报表标头/注脚命令,打开报表标头/注脚区。 2)在DataReport窗口上右击鼠标,在快捷菜单上选择插入分组标头/注脚命令,打开分组标头/注脚区。 结果显示报表的更多分区如图10-14所示。,图

19、10-14 DataReport的所有分区,25,报表标头/报表注脚区: 报表标头:出现在一组报表的第一页的开始处。用来显示对整组报表进行说明的文字。 报表注脚:出现在一组报表的的最后。一般放总结性文字,如对该组报表的数据统计和分析等内容。,26,分组标头/分组注脚: 在分组报表中,所有内容都按照某一字段分成若干组显示。例如学生成绩,可按学生的专业进行分组显示,以清楚地看出每个专业的学生的学习情况。 分组标头:出现在每一组数据的开始,常用来显示分组字段的内容,或说明文字。 分组注脚:出现在每组数据的结尾处,用来显示对该组数据的统计和汇总。也可显示说明性文字。,27,10.2.2 用DataRe

20、port设计器创建报表,1. 创建报表的方法 创建打印报表的一般步骤如下: (1)在DataEnvironment1 中建立数据源连接 ,并创建命令对象。 (2)为DataReport1 设置属性,使之与命令对象绑定,即设置 DataReport1的以下两个属性: DataSource:指定数据环境设计器的名称。 DataMember:指定数据环境设计器中的某命令对象名,即绑定到该命令对象。 (3)设置报表的结构,将命令对象拖放到DataReport1 的对应区域中,调整报表的布局。 (4)预览和打印报表。,28,2 创建报表举例,例10-6 创建学生信息表中所有记录的打印报表。 (1)建立数

21、据源连接 ,并创建命令对象 打开例10-5工程,若工程中没有数据环境设计器和数据报表设计器,需要自己进行添加。 将连接对象ChengJiGL连接到数据库cjgl ,创建命令对象:XueSheng, 返回所有学生信息。 由于例10-5工程,已经连接好数据源,并已经创建好了XueSheng命令,所以不必重新连接。,29,(2) 创建报表,并绑定到XueSheng命令上,用于显示XueSheng命令对象返回的记录: 双击DataReport1,打开该报表设计器; 在DataReport1的属性窗口中,绑定数据源,即设置其属性如下: DataSource:DataEnvironment1 DataMe

22、mber: XueSheng (在数据环境中建立的命令对象),30,(3)设置报表的结构,调整报表的布局 在DataReport1报表设计器窗口中右击鼠标,在显示的快捷菜单中选择检索结构,自动检索其所连接的XueSheng命令对象的结构; 用鼠标左键将命令对象XueSheng 拖放到DataReport1 报表设计器的“细节”区中 这时在报表细节区可以看到XueSheng命令返回的记录集的各个字段名的标签控件和用于显示记录值的文本框控件;,31,将每个字段名的标签拖放到页标头区中适当的位置,调整细节区中各文本框控件到适当位置 在页标头区中,添加一个标签控件,用于显示标题文字“学生信息表” (4

23、) 显示报表的打印预览 执行菜单命令工程DataProject属性,将DataReport1设为启动对象;运行程序,显示报表的打印预览效果如图10-16。 或执行:DataReport1.Show,图10-16 运行显示报表的预览效果,32,例10-7显示学生的姓名、课名、成绩的打印报表。,(1)在例10-7工程中,双击DataEnvironment1打开数据环境窗口,添加命令对象ChengJi,操作如下: 右击连接对象ChengJiGL, 在显示的快捷菜单中选择添加命令,设计器窗口中将出现Command1 命令对象; 右击Command1 命令对象,选择属性 命令,打开该命令的属性页; 在

24、通用选项卡中,将命令名称改为“ChengJi” 单击SQL 描述 单选钮,键入SQL 语句: Select 姓名,课程名称,成绩 From 学生信息表,课程信息表,成绩表 Where 学生信息表.学号=成绩表.学号 And 课程信息表.课程编号=成绩表.课程编号;,33,(2)创建成绩报表 在本工程中,添加一个报表控件DataReport2: 执行菜单命令: 工程添加DataReport 将DataReport2绑定到命令对象ChengJi上: 双击DataReport2 , 打开该报表设计器;在DataReport2 的属性窗口中,设置属性: DataSource : DataEnviorn

25、ment1 DataMember: ChengJi,34,(3)设计报表的结构、布局: 右击DataReport2 报表设计器,选择检索结构 ,自动检索命令对象ChengJi 的结构; 将命令对象ChengJi拖放到DataReport2 报表设计器的 “细节” 区中; 将每个字段的标签拖放到 “页标头” 区中适当的位置,调整细节区中各文本框控件到适当位置。 在页标头区中添加一个标签控件,显示报表的标题,将Caption设为“学生成绩单”,字号:二号。,35,(4)用窗体上的按钮,显示报表的打印预览: 在窗体上添加一按钮Command2,标题设为:成绩报表 编写按钮的单击事件: Private

26、 Sub Command2_Click() DataReport2.Show End Sub 将窗体设为启动对象 运行程序,单击该按钮,将显示报表的打印预览效果,如图10-17所示。,图10-17 学生成绩报表,36,10.2.3 根据输入的参数创建报表,可以将一个变量的内容或将文本框中输入的内容作为参数传递给数据环境设计器中的查询。下面将举例说明怎样向一个用于报表生成的查询中传递参数。 【例10.8】打印报表中显示指定姓名的学生记录。 要求:在文本框中输入姓名,单击打印预览按钮,将显示报表,其中显示所输入姓名的学生记录。,37,设计过程如下:,(1)启动VB,新建一个数据工程。此工程中将自动

27、包含一个窗体,一个DataEnvironment1和一个DataReport1。 (2)建立数据源连接:打开DataEnvironment1窗口,将Connection1改名为:ChengJi;鼠标右击该连接对象,在弹出的快捷菜单中选择属性命令,打开属性窗口;选择连接选项卡,选择数据源名称为前边所配置好的ODBC数据源:cjgl。单击测试连接按钮,提示“连接成功”信息即可。,38,(3)添加命令对象:鼠标右击连接对象ChengJi,在弹出的快捷菜单中选择添加命令命令对象Command1,改名为:XueSheng;右击该命令对象XueSheng,在弹出的菜单中选择属性,打开属性窗口选择SQL语句

28、单选钮,输入下面的SQL语句: Select 学号,姓名,性别,生日 From 学生信息表 Where 姓名 = ?,图10.18 命令对象属性SQL语句,39,(4)在属性窗口中单击参数选项卡,设置有关参数如图10.19。,图10.19 命令对象的参数设置,40,(5)打开DataReport1设计窗口,设置属性如下: DataSource:DataEnvironment1 DataMember:XueSheng 右击DataReport1设计窗口中细节区,在弹出的菜单中选择检索结构命令,然后将图10.20中的命令对象XueSheng拖放到细节区,调整好报表的布局,41,图10.22 窗体的

29、设计,(6)设计窗体如图10.22。 添加一个文本框Text1 添加按钮, 改名为CmdPrint, Caption属性为:打印预览。 添加一个标签Label1, 设置标题属性为:输入姓名。 编写按钮的单击事件过程代码如下: Private Sub CmdPrint_Click() DataEnvironment1.XueSheng Text1.Text DataReport1.Show End Sub,42,运行程序,在文本框中输入姓名,如图10.22,单击打印预览按钮,显示的打印报表如图10.23所示。,图10.23 打印报表运行结果,43,若想实现:输入某个姓(例如:王)则打印所有姓王的

30、学生记录,要用模糊查询功能。可对该例做如下改进: 将图10.20中输入的SQL语句中的“=”号改为 “Like” ,即输入的SQL语句如下: Select 学号,姓名,性别,生日 From 学生信息表 Where 姓名 Like ? 编写打印预览按钮的单击事件过程代码如下: Private Sub Command2_Click() DataEnvironment1. XueSheng Text1.Text & “%” DataReport1.Show End Sub 运行程序,在文本框中输入:王,单击打印预览按钮,显示的打印报表如图10.24所示。,图10.24 打印报表运行结果,44,10.

31、3 创建分组报表,在DataEnvironment中,可以用层次结构的命令对象建立分组报表,或用分组命令对象建立分组报表。 10.3.1 用关系层次结构的命令对象建立分组报表 如果将数据显示成如图10.25所示,即按课程名称分组显示,则可以使数据关系层次清晰。 这就需要建立关系层次结构的命令对象,它适合于多表查询的情况。,图10.25 分组显示成绩报表,45,【例10.9】建立按课程名称分组的成绩报表。,(1)建立命令对象,取名为“成绩分组区” 该部分返回的记录字段应该是用于分组的字段。操作步骤如下。 打开上例工程,在“DataEnvironment1”中的连接对象ChengJiGL中,添加新

32、命令,然后右击该命令,选择“属性”菜单,打开“属性”对话框(如图10.26); 在通用选项卡中,将命令名称设为“成绩分组区”,其数据源设为SQL语句: SELECT 课程编号, 课程名称 FROM 课程信息表 “成绩分组区”命令对象的属性设置结果如图10.26所示,单击确定按钮,关闭属性对话框。,图10.26 “分组成绩表”命令对象的属性设置,46,(2)在“成绩分组区”下建立子命令,取名为“成绩细节区”,操作步骤如下。 在DataEnvironment1中右击“成绩分组区”命令对象,在弹出的快捷菜单中选择添加子命令,此时可见在“成绩分组区”命令对象下出现子命令对象,默认名为Command1。

33、、 用鼠标右击该子命令对象,在弹出的快捷菜单中选择属性命令,打开属性对话框,在通用选项卡中,将命令名称改为“成绩细节区”; 在数据源选择区域中,选择SQL语句单选按钮,单击SQL生成器按钮,将打开数据视图对话框,如图10.27所示,并打开SQL生成器窗口,如图10.28所示。,47,用鼠标左键将数据视图对话框中的“学生信息表”和“成绩表”分别拖到SQL生成器上部的输入源窗格中,并在该窗格中选择“学生信息表”中的“学号”、“姓名”字段和“成绩”表中的“课程编号”、“成绩”字段作为数据源,SQL生成器会自动根据你的选择生成SQL语句如下: SELECT 学生信息表. 学号, 学生信息表. 姓名,

34、成绩表. 成绩, 成绩表. 课程编号 FROM 学生信息表 INNER JOIN 成绩表 ON 学生信息表. 学号 = 成绩表. 学号 关闭SQL生成器,将弹出提示保存查询的信息框,单击是按钮,保存生成的SQL语句。,48,(3)使父命令和子命令相关联,在“成绩细节区”子命令的属性对话框中,选择关联选项卡(如图10.29),确认父命令是“成绩分组区”; 在关联定义框中,选择父字段和子字段都为“课程编号”,表示父、子命令通过“课程编号”字段相关联,然后单击添加按钮,将 父字段和子字段的选择添加到下边的列表框中。 单击确定按钮,关闭属性对话框,成绩单的命令层次关系就定义完了。结果在图10.30所示

35、的数据环境窗口中,显示出定义好的每门课程的学生成绩的命令。,49,(4)用MSHFlexGrid控件显示命令层次结构,MSHFlexGrid控件属于ActiveX控件。如果是直接新建的数据工程,则VB会自动将MSHFlexGrid控件添加到标准工具箱中;若没有,则需要另外在工程部件里,选择“Microsoft Hierarchical FlexGrid Control 6.0”,将该控件添加到工具箱中。 在窗体上添加一个MSHFlexGrid控件,使用默认名称为MSHFlexGrid1,并调整到合适大小; 设置该控件的属性如下,以绑定数据源: DataSource :DataEnvironme

36、nt1 DataMember:成绩分组区(即:父命令的名称),50,(5)用DataReport显示层次命令结构的打印报表,在工程资源管理器窗口中,双击DataReport1,打开报表设计器窗口,在窗口中右击鼠标,在显示的快捷菜单中选择插入分组标头/注脚,使DataReport1窗口中显示分组区。 在属性窗口中设置DataReport1的属性,绑定数据源: DataSource : DataEnvironment1 DataMember: 成绩分组区(即:父命令的名称),51,在DataReport1窗口的任意位置单击鼠标右键,在快捷菜单中选择检索结构。 打开DataEnvironment1窗

37、口,将父命令“成绩分组区”中的“课程名称”字段拖放到DataReport1的分组标头区域中(因为按“课程名称”分组显示)。 将子命令对象“成绩细节区”整个拖放到DataReport1的细节区域内,删除“课程编号”字段,将其余字段的标签放到分组标头区中,将各字段的文本框控件保留在细节区中,调整布局如图10.32。,图10.32 报表布局设计,52,10.3.2 用分组层次结构的命令对象建立分组报表,分组层次结构命令适合于单表查询的情况。 例如按“专业”字段,分组显示学生记录,可以使查找学生信息更为清晰。 【例10.10】 建立按“专业”字段分组显示的学生记录的数据报表。 (1)建立分组命令对象,

38、操作如下: 打开上例工程,在“DataEnvironment1”的连接对象ChengJiGL中,添加新命令,右击该命令,选择“属性”菜单,打开“属性”对话框; 在通用选项卡中,将命令名称设为“学生信息”,其数据源设为SQL语句如下: select * from 学生信息表,53,单击分组选项卡(如图10.33所示),选中分组命令对象复选框,分组命令名称自动生成为:“学生信息_分组”,也可以修改该名称。在命令中的字段列表中,选择用来分组的字段:“专业”,并单击按钮,“专业”字段移到用于分组的字段列表框中。然后单击确定按钮,关闭属性对话框。 这时在数据环境设计器窗口中创建了一个名为“学生信息_分组

39、”的命令对象,并使其成为原命令“学生信息”的父命令。该分组命令的层次结构如图10.34所示。,图10.33 设置用于分组的字段,54,(2)用MSHFlexGrid控件显示分组命令层次结构,添加一个窗体Form1,标题属性Caption设为:学生信息; 在窗体上添加控件MSHFlexGrid1,调整到合适大小; 设置该控件的属性如下,以绑定数据源: DataSource : DataEnvironment1 DataMember: 学生信息_分组,55,(3)用DataReport显示分组命令结构打印报表,在属性窗口中设置DataReport2的属性,绑定数据源: DataSource : D

40、ataEnvironment1 DataMember: 学生信息_分组 在DataReport2窗口的任意位置单击鼠标右键,在快捷菜单中选择检索结构。 打开DataEnvironment1窗口,将“摘要字段在学生信息_分组”中的“专业”字段拖放到DataReport1的分组标头区域中。 将“细节字段在学生信息”整个拖放到DataReport2的细节区域内,并删除细节区域内的“专业”字段,将其余字段的标签放到分组标头区中,将各字段的文本框控件保留在细节区中,调整布局。,56,10.4 报表控件及其应用,在VB的工具箱的“数据报表”选项卡中,为DataReport提供了6种专用控件: RptLab

41、el: 标签控件,在报表中显示静态文本 RptLine: 画线控件,显示直线 RptTextBox: 文本框,显示字段的数据。 RptImage: 显示图片。 RptShape:显示矩形、圆形等图形 RptFunction:显示计算字段。,57,10.4.1 在报表中加入网格线,在数据报表工具箱中,单击RptLine后,可在细节区用鼠标手工画线条;或单击RptShape,在细节区画矩形框,即可显示网格。 在细节区中每显示一条记录,则文本框周围的线条将被显示一次。 可以在属性窗口中,设置RptShape和RptLine控件的属性,如:线条的样式、颜色等。 例如在例10-8的DataReport2

42、中,用RptShape控件画矩形,将页标头区中各字段的标签控件框起来;在细节区中的各文本框控件的下边用RptLine控件画一条横线,且在两端各画一条竖线(见图10-31)。图10-32 为加表格线报表的运行结果,58,图10-32 加表格线报表的运行结果,图10-31 在报表中画线和矩形,59,10.4.2 显示文本和图片,用RptLabel控件可在报表中添加标题,页眉/注脚等文本 例:在工具箱中单击标签控件RptLabel,在报表标头区添加如标签控件,在Caption属性中输入报表的标题文字。 用图像控件RptImage ,可以在报表中显示图片。例如对于一个单位或一个公司而言,考虑到公司的形

43、象,往往在报表的头部显示公司的徽标等图形。只要在报表中添加RptImage控件,设置其Picture属性为所需图片文件即可。,60,10.4.3 统计与计算,1用RptFunction控件实现统计与计算 在实际工作中,常常在分组报表中,对该组数据进行汇总、统计,并以一定的格式显示出来。 在数据报表中用RptFunction控件,调用一些内置函数,可以实现对某字段数据进行求和、求平均值、求最大值、求最小值等计算。 RptFunction控件的FunctionType属性:用于指定进行何种计算,其取值含义如表10-1所示。 注意:RptFunction控件只能放在DataReport的分组注脚和报

44、表注脚区域中。,61,表10-1 FunctionType属性取值含义,62,例10-12 在学生成绩单报表中显示最高分。,在例10-11的DataReport2的报表注脚区添加一个RptFunction控件,设置属性如下: 名称:Funtion1 DataMember: ChengJi DataField: 成绩 FunctionType: 3 - rptFuncMax Font: 五号、粗体 在RptFunction控件左边添加一个标签RptLabel控件,用来显示”最高分”. 设置属性如下: Caption:最高分 Font: 五号、粗体 DataReport2的设计结果如图10-33所

45、示,运行结果如图10-34所示。,63,图10-33 数据报表的设计结果,图10-34 数据报表的运行结果,64,例10-13 在学生成绩报表的分组注脚区中,显示该门课的成绩的平均分。,设计过程如下: 在上例10-10的DataReport1的分组注脚区添加RptFunction控件,设置属性如下: 名称:Funtion1 DataMember: 成绩细节区 DataField: 成绩 FunctionType: 1rptFuncAve Font: 五号、粗体,65,在分组注脚区添加RptLabel控件,设置属性如下: Caption: 平均分: Font: 五号、粗体 用rptLine控件,

46、在分组区画两条横线,在细节区画一条横线。 DataReport1的布局设计结果如图10-35所示,运行结果如图10-36所示。,66,图10-36 数据报表的运行结果,图10-35 数据报表的布局设计,67,10.4.4 显示页码和日期,使用RptLabel控件,若将Caption属性设为下表所示的值,则将显示所代表的内容。 %p 当前页号 %P 报表的总页数 %d 当前日期(短日期格式) %D 当前日期(长日期格式) %t 当前时间(短时间格式) %T 当前时间(长时间格式) %i 报表标题 例:在页注脚区添加RptLabel控件,设Caption属性值: %p。则运行程序,将显示当前页码。

47、,68,在报表设计器中,提供了快捷菜单,可向报表插入页码、日期、时间等内容。 可在报表中的相应区,单击鼠标右键,选择插入控件命令,再在子菜单中选择要插入的内容。 插入报表标题后,要设置Caption属性,为要显示的标题字符串。,69,例10-15 在页注脚区中,显示当前日期,当前页码。,打开上例的中的DataReport2窗口; 在页注脚区中,右击鼠标,在弹出的快捷菜单中选择插入控件当前页码,则添加了一个Caption为%p的标签; 在页注脚区中,再右击鼠标,在弹出的快捷菜单中选择插入控件当前日期(长格式),则添加了一个Caption为%D的标签; 在%p的左右分别添加标签,Caption分别

48、为:“第”和“页”;调整合适布局,结果如图10-41所示。 运行DataReport2结果如图10-42所示。,70,图10-41 在页注脚区添加页码和日期,图10-42 页码和日期的运行显示结果,71,10.4.5 控制分页,DataReport的每个分区都有两个属性,控制该区域的分页行为。 ForcePageBreak属性、KeepTogether属性 1. ForcePageBreak属性,取值意义如下: 0rptPageBreakNone : 不分页 1rptPageBreakBefore:在当前区前边分页 2rptPageBreakAfter:在当前区后边分页 3rptPageBreakBeforeAndAfter: 在当前区前、后边都分页,72,例如,对于例10.15,若希望每门课成绩显示完,就另

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1