1、1第第10章章 数据报表的设计数据报表的设计210.1 数据环境设计器数据环境设计器数据库的数据管理及维护、数据的查询等工作,都数据库的数据管理及维护、数据的查询等工作,都会形成各种数据报表,并希望以打印预览的形式显会形成各种数据报表,并希望以打印预览的形式显示,或形成打印文档,可直接打印出来。所以数据示,或形成打印文档,可直接打印出来。所以数据报表是数据库应用程序中非常重要的部分。报表是数据库应用程序中非常重要的部分。数据报表设计器数据报表设计器(Data Report Designer)是是VB6.0新增的功能,和新增的功能,和数据环境设计器数据环境设计器(Data Environment
2、 Designer)配套使用,能完成多种配套使用,能完成多种类型报表的设计,是高效的报表设计工具。类型报表的设计,是高效的报表设计工具。数据环境设计器数据环境设计器(Data Environment Designer)是一个可视化的编程环境,可以在设计时创建数据是一个可视化的编程环境,可以在设计时创建数据环境及环境及ADO对象。可以设置连接对象和命令对象对象。可以设置连接对象和命令对象的属性值、编程响应的属性值、编程响应ADO事件,也可以将数据环事件,也可以将数据环境设计器中的对象拖动到数据报表中来创建数据绑境设计器中的对象拖动到数据报表中来创建数据绑定控件。定控件。310.1.1 数据环境设
3、计器的创建数据环境设计器的创建在使用数据环境设计器时,必须在工程中添在使用数据环境设计器时,必须在工程中添加并引用加并引用Data Environment对象。对象。创建创建Data Environment对象有以下方法:对象有以下方法:l采用新建数据工程的方法采用新建数据工程的方法l在已有工程中添加在已有工程中添加Data Environment对象的方对象的方法。法。1新建数据工程新建数据工程利用新建数据工程的方法,利用新建数据工程的方法,VB可以在工程中可以在工程中自动添加自动添加Data Environment对象和数据报对象和数据报表设计器(表设计器(DataReport)对象。)对
4、象。4新建数据工程的操作过程如下:新建数据工程的操作过程如下:启动启动VB6.0,新建一个工程,或在,新建一个工程,或在VB6.0环环境中执行菜单:境中执行菜单:文件文件新建工程新建工程,打开打开新建工程新建工程对话框如图对话框如图10-1,选择,选择数据工数据工程程项,单击项,单击确定确定按钮,即可创建数据工程。按钮,即可创建数据工程。图图10-1 在新建工程对话框中选择在新建工程对话框中选择数据工程数据工程项项图图10-2 数据工程的数据工程的工程资源管理器工程资源管理器窗口窗口5此时观察此时观察工程资源管理器工程资源管理器窗口,可见工程中窗口,可见工程中除了含有除了含有l一个窗体一个窗体
5、(默认名称默认名称:frmDataEnv)l一个数据环境设计器一个数据环境设计器(默认名称:默认名称:DataEnvironment1)l一个数据报表设计器一个数据报表设计器(默认名称:默认名称:DataReport1)。Visual Basic 6.0还在标准工具箱中自动添加还在标准工具箱中自动添加了可以在数据工程中配合使用的了可以在数据工程中配合使用的ActiveX控件:控件:ADODC、DataGrid、DataList、DataCombo等。等。62在现有工程中添加数据环境设计器在现有工程中添加数据环境设计器在现有的标准工程中,也可以利用菜单命令在现有的标准工程中,也可以利用菜单命令添
6、加数据环境设计器对象。操作方法如下:添加数据环境设计器对象。操作方法如下:执行菜单:执行菜单:工程工程添加添加DataEnvironment可以添加一个数据环境设计器可以添加一个数据环境设计器(默认名称:默认名称:DataEnvironment1)到本工程中。到本工程中。创建数据环境设计器后,可以用它来创建创建数据环境设计器后,可以用它来创建Connection对象以建立对数据源的连接,对象以建立对数据源的连接,创建创建Command对象以返回记录集;还可以对象以返回记录集;还可以拖动拖动Command对象或对象或Command对象的对象的Field对象来创建报表。对象来创建报表。710.1.
7、2 连接对象连接对象(Connection)数据环境通过连接数据环境通过连接(Connection)对象与数据库发对象与数据库发生联系,从而访问该数据库,因此利用数据环境建生联系,从而访问该数据库,因此利用数据环境建立到数据库的访问,立到数据库的访问,首先要创建首先要创建Connection对象对象。在一个数据环境设计器中允许创建一个或多个在一个数据环境设计器中允许创建一个或多个Connection对象,每个对象,每个Connection对象代表一对象代表一个与数据库的连接,可以连接到本地数据库或网络个与数据库的连接,可以连接到本地数据库或网络数据源。数据源。在图在图10-2所示的所示的 工程
8、资源管理器工程资源管理器 窗口中,双击窗口中,双击数据环境设计器数据环境设计器DataEnvironment1,可打开该,可打开该设计器窗口,可见其中自动已设计器窗口,可见其中自动已有一个连接对象有一个连接对象(默默认名称:认名称:Connection1),可以将该连接对象连接,可以将该连接对象连接到某个到某个DSN数据源数据源。图图10-3 数据环境窗口中添加连接对象数据环境窗口中添加连接对象81添加连接对象添加连接对象添加添加Connection对象的方法是:在图对象的方法是:在图10-3所示的窗口中,鼠标右击数据环境设计器名所示的窗口中,鼠标右击数据环境设计器名称,在弹出的快捷菜单中,选
9、择称,在弹出的快捷菜单中,选择添加连接添加连接项,即可添加一个新的连接项,即可添加一个新的连接(默认名称默认名称Connection2)。也可以在数据环境设计器。也可以在数据环境设计器窗口中单击工具栏中的窗口中单击工具栏中的添加连接添加连接(图图10-3中所示工具栏中的左边第一个中所示工具栏中的左边第一个)按钮,添加按钮,添加一个新的连接对象。一个新的连接对象。92设置连接对象到数据源的连接设置连接对象到数据源的连接下面以连接到下面以连接到“成绩管理成绩管理”数据库为例,介绍连接数据库为例,介绍连接数据源的方法。数据源的方法。例例10-1 将将Connection对象连接到对象连接到“成绩管理
10、成绩管理”数据数据库。库。设计过程如下:设计过程如下:(1)建立)建立ODBC数据源数据源前边已经对前边已经对“成绩管理成绩管理”数据库配置了数据库配置了ODBC数据数据源,系统源,系统DSN名为名为cjgl。(2)为)为Connection1重命名重命名重命名是为了增强可读性,使人一看到该连接的名重命名是为了增强可读性,使人一看到该连接的名称就知道其所连接的是哪个数据库。称就知道其所连接的是哪个数据库。操作方法是:操作方法是:在当前数据环境设计器窗口中,右击连接对象在当前数据环境设计器窗口中,右击连接对象Connection1,在弹出的快捷菜单中选择,在弹出的快捷菜单中选择重命名重命名命命令
11、,将连接的名称改为:令,将连接的名称改为:ChengJiGL。10(3)连接数据源)连接数据源数据环境设计器窗口中,右击连接对象数据环境设计器窗口中,右击连接对象ChengJiGL,在弹出的快捷菜单中选择,在弹出的快捷菜单中选择属属性性命令,打开数据连接属性对话框。命令,打开数据连接属性对话框。在在连接连接选项卡的选项卡的1.指定数据源指定数据源框中,选框中,选中中使用数据源名称使用数据源名称项,并在其下拉列表中项,并在其下拉列表中选择数据源选择数据源cjgl。单击单击测试连接测试连接按钮,将显示按钮,将显示“测试连接成测试连接成功功”提示信息框,然后单击提示信息框,然后单击确定确定按钮即可。
12、按钮即可。图图10-4 连接数据源连接数据源1110.1.3 命令对象(命令对象(Command)完成了完成了Connection与数据源的连接后,要与数据源的连接后,要想操作数据源中的数据,还要创建命令对象想操作数据源中的数据,还要创建命令对象(Command)。)。命令对象可以基于数据库对象(如表、视图、命令对象可以基于数据库对象(如表、视图、存储过程)或者存储过程)或者SQL查询,返回查询,返回Recordset对象中的记录,也可以进行数据操作或处理对象中的记录,也可以进行数据操作或处理数据结构。数据结构。在一个在一个Connection对象中,可以建立多个对象中,可以建立多个Comma
13、nd对象,每个对象,每个Command对象都要对象都要和和Connection对象相联系,它具体定义了对象相联系,它具体定义了如何从如何从Connection对象所连接的数据源中对象所连接的数据源中返回数据。返回数据。12若一个若一个Command对象返回数据,则称之为对象返回数据,则称之为“记录集返回记录集返回”,意为该命令从数据源中返,意为该命令从数据源中返回数据,可以通过回数据,可以通过DataEnvironment的的Recordset对象访问这些数据。对象访问这些数据。若若Command对象不返回数据,则称之为对象不返回数据,则称之为“非记录集返回非记录集返回”,表示该命令是一个存储
14、,表示该命令是一个存储过程或执行诸如过程或执行诸如Insert Into、Update、Delete等动作查询的等动作查询的SQL语句,不立即返回语句,不立即返回记录集数据。记录集数据。可以创建子命令对象,通过父命令和子命令可以创建子命令对象,通过父命令和子命令对象之间的关系,来以层次结构的形式获取对象之间的关系,来以层次结构的形式获取一组相关的数据。一组相关的数据。131添加添加Command对象对象添加添加Command对象的方法是:在数据环境设计窗对象的方法是:在数据环境设计窗口中,鼠标右击口中,鼠标右击Connection对象名称,在弹出的对象名称,在弹出的快捷菜单中,选择快捷菜单中,
15、选择添加命令添加命令项,即可添加一个新项,即可添加一个新的命令对象的命令对象(默认名称默认名称Command1)。2为为Command1重命名重命名右击右击Command1命令对象,在弹出的快捷菜单中命令对象,在弹出的快捷菜单中选择选择重命名重命名命令,将命令对象的默认名称命令,将命令对象的默认名称Command1改为所需的名称改为所需的名称 也可以在弹出的快捷菜单中选择也可以在弹出的快捷菜单中选择属性属性命令,打开命令,打开属性对话框,在该对话框中更改命令的名称。属性对话框,在该对话框中更改命令的名称。3设置设置Command对象的数据源对象的数据源建立了命令对象后,要设置其数据源属性,使其
16、返建立了命令对象后,要设置其数据源属性,使其返回不同的记录集或进行不同的操作。回不同的记录集或进行不同的操作。14例例10-2 建立命令对象,返回课程信息表中建立命令对象,返回课程信息表中的满足条件的满足条件“学时学时=50”的所有记录。的所有记录。建立另一个命令,返回学生信息表的所有建立另一个命令,返回学生信息表的所有记录。记录。设计过程如下:设计过程如下:(1)在例在例10-1的工程中,打开数据环境设的工程中,打开数据环境设计窗口,右击连接对象计窗口,右击连接对象GhengJiGL,在快,在快捷菜单中,选择捷菜单中,选择添加命令添加命令,即可见该窗,即可见该窗口中多了一个口中多了一个Com
17、mand1对象。对象。(2)设置命令对象的属性:设置命令对象的属性:l右击右击Command1对象,在快捷菜单中,选择对象,在快捷菜单中,选择属性属性命令,即可打开属性对话框如图命令,即可打开属性对话框如图10-5。图图10-5 命令对象的属性对话框命令对象的属性对话框15l在在通用通用选项卡中,将命令名称选项卡中,将命令名称Command1改为改为kecheng;l在在连接连接下拉列表框中选择连接对象名下拉列表框中选择连接对象名ChengJiGL;l选择数据源时,可以选择数据库对象,也可以选择选择数据源时,可以选择数据库对象,也可以选择SQL语句作为命令对象的数据源。语句作为命令对象的数据源
18、。l根据本题意,要求返回课程信息表中的满足条件根据本题意,要求返回课程信息表中的满足条件“学时学时=50”的所有记录,应选择的所有记录,应选择SQL语句语句选项,并在下边选项,并在下边的文本框中输入的文本框中输入SQL查询语句:查询语句:“Select*From 课程信课程信息表息表 Where 学时学时=50”l最后单击最后单击确定确定按钮即可。按钮即可。完成命令对象的连接后,在数据环境窗口中展开命完成命令对象的连接后,在数据环境窗口中展开命令对象令对象kecheng节点,可以显示出该命令对象所包节点,可以显示出该命令对象所包含的含的Field(字段)对象(如图(字段)对象(如图10-6所示
19、)。所示)。图图10-6 建立的建立的kecheng命令对象命令对象16建立另一个命令,返回学生信息表的所有记建立另一个命令,返回学生信息表的所有记录。录。若想返回一个表的所有记录,则可以在图若想返回一个表的所有记录,则可以在图10-5所示对话框中选中所示对话框中选中数据库对象数据库对象选项,选项,在其旁边的下拉列表中选择在其旁边的下拉列表中选择“表表”,然后在,然后在下边的下边的对象名称对象名称旁的下拉列表框中选择所旁的下拉列表框中选择所要的表名称即可。要的表名称即可。例如:在本例中再添加一个命令对象,返回例如:在本例中再添加一个命令对象,返回学生信息表中的所有记录。操作过程如下:学生信息表
20、中的所有记录。操作过程如下:l在图在图10-6所示的数据环境窗口中右击连接对象所示的数据环境窗口中右击连接对象GhengJiGL,在快捷菜单中,选择,在快捷菜单中,选择添加命令添加命令,即添加一个即添加一个Command1对象。对象。17 l右击右击Command1对象,在快捷菜单中,选择对象,在快捷菜单中,选择属属性性命令,打开属性对话框如图命令,打开属性对话框如图10-5。l在在通用通用选项卡中,将命令名称选项卡中,将命令名称Command1改为改为XueSheng;l确认确认连接连接对象名为对象名为ChengJiGL;l选择数据源时,选择选择数据源时,选择数据库对象数据库对象选项,在其旁
21、选项,在其旁边的下拉列表中选择边的下拉列表中选择“表表”,然后在下边的,然后在下边的对象对象名称名称旁的下拉列表框中选择旁的下拉列表框中选择“学生信息表学生信息表”。l最后单击最后单击确定确定按钮,关闭属性窗口。此时在数按钮,关闭属性窗口。此时在数据环境窗口中,可以看到新建立的命令据环境窗口中,可以看到新建立的命令XueSheng。1810.1.4 数据环境设计器的简单应用数据环境设计器的简单应用用数据环境设计器可以创建数据窗体,数据报表、用数据环境设计器可以创建数据窗体,数据报表、图表等,也可以对数据环境设计器所创建的图表等,也可以对数据环境设计器所创建的ADO对象进行编程。对象进行编程。1
22、从数据环境创建窗体从数据环境创建窗体当设置好数据环境中连接对象及命令对象的数据源当设置好数据环境中连接对象及命令对象的数据源后,可以象其它数据控件一样,将数据绑定控件与后,可以象其它数据控件一样,将数据绑定控件与其绑定,显示数据源的数据。其绑定,显示数据源的数据。使用数据绑定控件创建数据窗体有两种方法:使用数据绑定控件创建数据窗体有两种方法:l通过设置绑定控件的属性与数据源绑定;通过设置绑定控件的属性与数据源绑定;l也可以从数据环境设计器中直接拖动命令对象或字段对也可以从数据环境设计器中直接拖动命令对象或字段对象到窗体上,快速地创建数据窗体。象到窗体上,快速地创建数据窗体。19例例10-3 利
23、用数据绑定控件创建课程信息显示利用数据绑定控件创建课程信息显示窗体。窗体。在例在例10-2的数据工程中的窗体上,添加的数据工程中的窗体上,添加5个标签控个标签控件,分别设置其件,分别设置其Caption属性为课程信息表的各个属性为课程信息表的各个字段的名:课程编号、课程名称、学时、学分、教字段的名:课程编号、课程名称、学时、学分、教师编号。师编号。再添加再添加5个文本框,分别用来显示各字段的数据,个文本框,分别用来显示各字段的数据,将其绑定到数据源的方法是:将其绑定到数据源的方法是:l设置设置DataSource属性为:属性为:DataEnvironment1l设置设置DataMember属性
24、为:属性为:kecheng(即:命令对象的即:命令对象的名称名称)l设置设置DataField 属性为:所要显示字段的名称。属性为:所要显示字段的名称。将该窗体设为启动窗体,运行程序,结果如图将该窗体设为启动窗体,运行程序,结果如图10-7所示。所示。20例例10-4 用拖动对象方法创建数据窗体。用拖动对象方法创建数据窗体。在上例工程中,添加一个新窗体,名为在上例工程中,添加一个新窗体,名为Form1,Caption属性设为:课程信息。属性设为:课程信息。打开数据环境设计器窗口,用鼠标选中命令对象打开数据环境设计器窗口,用鼠标选中命令对象kecheng,并按住鼠标左键,将命令对象,并按住鼠标左
25、键,将命令对象kecheng拖动到窗体上。可以看到拖动到窗体上。可以看到VB将自动在窗将自动在窗体上创建数据绑定控件,并自动设置体上创建数据绑定控件,并自动设置DataSource属性、属性、DataMember属性和属性和DataField 属性,结属性,结果如图果如图10-8所示。适当调整控件的大小,字体的所示。适当调整控件的大小,字体的属性等即可。属性等即可。将该窗体设为启动窗体,运行程序,可见文本框将该窗体设为启动窗体,运行程序,可见文本框控件中显示课程信息表的一条记录信息。控件中显示课程信息表的一条记录信息。2110.2 DataReport设计器概述设计器概述数据报表设计器(数据报
26、表设计器(Data Report Designer)是一)是一种简单实用、功能较为齐全、高效的报表设计工具。种简单实用、功能较为齐全、高效的报表设计工具。它和数据环境设计器它和数据环境设计器(DataEnvironment)配套使配套使用,不但可以形成一般形式的报表,而且还可以设用,不但可以形成一般形式的报表,而且还可以设计分组报表及多种复杂格式的报表。计分组报表及多种复杂格式的报表。报表设计主要包括报表设计主要包括数据源连接数据源连接和和报表的布局报表的布局两项工两项工作。作。报表的数据源可以通过数据环境设计器进行连接,报表的数据源可以通过数据环境设计器进行连接,而报表的布局可以通过在数据报
27、表设计器中,用而报表的布局可以通过在数据报表设计器中,用鼠鼠标拖动的方法标拖动的方法进行设计。进行设计。2210.2.1 DataReport设计器介绍设计器介绍1创建数据工程创建数据工程 在在“新建工程新建工程”对话框中,选择对话框中,选择数据工程数据工程,可,可在在 工程资源管理器工程资源管理器窗口中看到:窗口中看到:一个一个DataEnvironment1、一个一个DataReport1和和一个窗体名为一个窗体名为frmDataEnv也可以在现有的工程中添加也可以在现有的工程中添加DataEnvironment 和和DataReport,操作如下:,操作如下:l执行菜单执行菜单工程工程添
28、加添加DataEnvironmentl执行菜单执行菜单工程工程添加添加DataReport 在在工程资源管理器工程资源管理器窗口中,双击窗口中,双击DataReport1,打开报表设计器,如图打开报表设计器,如图10-13所示。所示。图图10-13 DataReport的基本分区的基本分区232 DataReport 的各分区的功能的各分区的功能(1)报表的基本分区)报表的基本分区DataReport1基本分区有:一个页标头区、一个基本分区有:一个页标头区、一个细节区、一个页注脚区细节区、一个页注脚区(见图见图10-13)。页标头页标头/页注脚区:页注脚区:l页标头和页注脚出现在每页的顶部和尾
29、部。相当于页眉页标头和页注脚出现在每页的顶部和尾部。相当于页眉和页脚。和页脚。l页标头页标头:可用来显示报表的名称、当前页的内容,及:可用来显示报表的名称、当前页的内容,及“续表续表”等。等。l页注脚页注脚:可显示当前页码:可显示当前页码 和总页数等。和总页数等。细节区:细节区:l是报表的数据区,显示记录的数据的详细信息。是报表的数据区,显示记录的数据的详细信息。l细节区紧接着分组标头或页标头,区域长度可伸缩,有细节区紧接着分组标头或页标头,区域长度可伸缩,有多少记录就显示多少行。多少记录就显示多少行。24(2)DataReport 的更多的分区的更多的分区为显示为显示DataReport的所
30、有区域,可操作如的所有区域,可操作如下:下:1)在在DataReport窗口上右击鼠标,在快捷窗口上右击鼠标,在快捷菜单上选择菜单上选择显示报表标头显示报表标头/注脚注脚命令,打命令,打开开报表标头报表标头/注脚区注脚区。2)在在DataReport窗口上右击鼠标,在快捷窗口上右击鼠标,在快捷菜单上选择菜单上选择插入分组标头插入分组标头/注脚注脚命令,打命令,打开开分组标头分组标头/注脚区注脚区。结果显示报表的更多分区如图结果显示报表的更多分区如图10-14所示。所示。图图10-14 DataReport的所有分区的所有分区25报表标头报表标头/报表注脚区:报表注脚区:l报表标头报表标头:出现
31、在一组报表的第一页的开始处。出现在一组报表的第一页的开始处。用来显示对整组报表进行说明的文字。用来显示对整组报表进行说明的文字。l报表注脚报表注脚:出现在一组报表的的最后。一般放总:出现在一组报表的的最后。一般放总结性文字,如对该组报表的数据统计和分析等内结性文字,如对该组报表的数据统计和分析等内容。容。26分组标头分组标头/分组注脚:分组注脚:l在分组报表中,所有内容都按照某一字段分成若干在分组报表中,所有内容都按照某一字段分成若干组显示。例如学生成绩,可按学生的专业进行分组组显示。例如学生成绩,可按学生的专业进行分组显示,以清楚地看出每个专业的学生的学习情况。显示,以清楚地看出每个专业的学
32、生的学习情况。l分组标头分组标头:出现在每一组数据的开始,常用来显示:出现在每一组数据的开始,常用来显示分组字段的内容,或说明文字。分组字段的内容,或说明文字。l分组注脚:分组注脚:出现在每组数据的结尾处,用来显示对出现在每组数据的结尾处,用来显示对该组数据的统计和汇总。也可显示说明性文字。该组数据的统计和汇总。也可显示说明性文字。2710.2.2 用用DataReport设计器创建报表设计器创建报表 1.创建报表的方法创建报表的方法创建打印报表的一般步骤如下:创建打印报表的一般步骤如下:(1)在)在DataEnvironment1 中建立中建立数据源连接数据源连接,并并创建命令对象创建命令对
33、象。(2)为)为DataReport1 设置属性,使之与命令对设置属性,使之与命令对象绑定,即设置象绑定,即设置 DataReport1的以下两个属性:的以下两个属性:lDataSource:指定数据环境设计器的名称。:指定数据环境设计器的名称。lDataMember:指定数据环境设计器中的某命令对象名,:指定数据环境设计器中的某命令对象名,即绑定到该命令对象。即绑定到该命令对象。(3)设置报表的结构,将命令对象拖放到)设置报表的结构,将命令对象拖放到DataReport1 的对应区域中,调整报表的布局。的对应区域中,调整报表的布局。(4)预览和打印报表。)预览和打印报表。282 创建报表举例
34、创建报表举例例例10-6 创建学生信息表中所有记录的打印报表。创建学生信息表中所有记录的打印报表。(1)建立数据源连接)建立数据源连接,并创建命令对象,并创建命令对象打开例打开例10-5工程,若工程中没有数据环境设计器工程,若工程中没有数据环境设计器和数据报表设计器,需要自己进行添加。和数据报表设计器,需要自己进行添加。将连接对象将连接对象ChengJiGL连接到数据库连接到数据库cjgl,创建,创建命令对象:命令对象:XueSheng,返回所有学生信息。返回所有学生信息。由于例由于例10-5工程,已经连接好数据源,并已经创工程,已经连接好数据源,并已经创建好了建好了XueSheng命令,所以
35、不必重新连接。命令,所以不必重新连接。29(2)创建报表,并绑定到创建报表,并绑定到XueSheng命令命令上,上,用于显示用于显示XueSheng命令对象返回的记录命令对象返回的记录:双击双击DataReport1,打开该报表设计器;,打开该报表设计器;在在DataReport1的属性窗口中,绑定数据源,的属性窗口中,绑定数据源,即设置其属性如下:即设置其属性如下:lDataSource:DataEnvironment1lDataMember:XueSheng(在数据环境中建在数据环境中建立的命令对象立的命令对象)30(3)设置报表的结构,调整报表的布局)设置报表的结构,调整报表的布局在在D
36、ataReport1报表设计器窗口中右击鼠标,报表设计器窗口中右击鼠标,在显示的快捷菜单中选择在显示的快捷菜单中选择检索结构检索结构,自动自动检索其所连接的检索其所连接的XueSheng命令对象的结构;命令对象的结构;用鼠标左键将命令对象用鼠标左键将命令对象XueSheng 拖放到拖放到DataReport1 报表设计器的报表设计器的“细节细节”区区中中这时在报表细节区可以看到这时在报表细节区可以看到XueSheng命令命令返回的记录集的各个返回的记录集的各个字段名的标签控件字段名的标签控件和用和用于显示记录值的于显示记录值的文本框控件文本框控件;31将每个字段名的标签拖放到将每个字段名的标签
37、拖放到页标头页标头区中区中适当的位置,调整细节区中各文本框控件适当的位置,调整细节区中各文本框控件到适当位置到适当位置 在页标头区中,添加一个标签控件,用于在页标头区中,添加一个标签控件,用于显示标题文字显示标题文字“学生信息表学生信息表”(4)显示报表的打印预览显示报表的打印预览执行菜单命令执行菜单命令工程工程DataProject属性属性,将将DataReport1设为启动对象;运行程序,设为启动对象;运行程序,显示报表的打印预览效果如图显示报表的打印预览效果如图10-16。或执行:或执行:DataReport1.Show图图10-16 运行显示报表的预览效果运行显示报表的预览效果32例例
38、10-7显示学生的姓名、课名、成绩的打印显示学生的姓名、课名、成绩的打印报表。报表。(1)在例)在例10-7工程中工程中,双击,双击DataEnvironment1打开数据环境窗口打开数据环境窗口,添加命令对象添加命令对象ChengJi,操作,操作如下:如下:右击连接对象右击连接对象ChengJiGL,在显示的快捷菜单中选在显示的快捷菜单中选择择添加命令添加命令,设计器窗口中将出现设计器窗口中将出现Command1 命令对象;命令对象;右击右击Command1 命令对象,选择命令对象,选择属性属性 命令,打命令,打开该命令的开该命令的属性页属性页;在在 通用通用选项卡中,将命令选项卡中,将命令
39、名称名称改为改为“ChengJi”单击单击SQL 描述描述 单选钮,键入单选钮,键入SQL 语句:语句:lSelect 姓名姓名,课程名称课程名称,成绩成绩 lFrom 学生信息表学生信息表,课程信息表课程信息表,成绩表成绩表 lWhere 学生信息表学生信息表.学号学号=成绩表成绩表.学号学号 And 课程信息表课程信息表.课程编号课程编号=成绩表成绩表.课程编号课程编号;33(2)创建成绩报表)创建成绩报表在本工程中,添加一个报表控件在本工程中,添加一个报表控件DataReport2:执行执行菜单命令菜单命令:工程工程添加添加DataReport将将DataReport2绑定到命令对象绑定
40、到命令对象ChengJi上:上:双击双击DataReport2,打开该报表设计器打开该报表设计器;在在DataReport2 的属性窗口中,设置属性:的属性窗口中,设置属性:lDataSource:DataEnviornment1lDataMember:ChengJi34(3)设计报表的结构、布局:)设计报表的结构、布局:右击右击DataReport2 报表设计器,选择报表设计器,选择检索检索结构结构,自动检索命令对象,自动检索命令对象ChengJi 的结构的结构;将命令对象将命令对象ChengJi拖放到拖放到DataReport2 报表设计器的报表设计器的“细节细节”区中区中;将每个字段的标
41、签拖放到将每个字段的标签拖放到“页标头页标头”区中区中适当的位置,调整细节区中各文本框控件到适当的位置,调整细节区中各文本框控件到适当位置。适当位置。在页标头区中添加一个标签控件,显示报表在页标头区中添加一个标签控件,显示报表的标题,将的标题,将Caption设为设为“学生成绩单学生成绩单”,字号:二号。字号:二号。35(4)用窗体上的按钮,显示报表的打印预)用窗体上的按钮,显示报表的打印预览:览:在窗体上添加一按钮在窗体上添加一按钮Command2,标题设,标题设为:成绩报表为:成绩报表编写按钮的单击事件:编写按钮的单击事件:Private Sub Command2_Click()DataR
42、eport2.ShowEnd Sub将窗体设为启动对象将窗体设为启动对象运行程序,单击该按钮,将显示报表的打印运行程序,单击该按钮,将显示报表的打印预览效果,如图预览效果,如图10-17所示。所示。图图10-17 学生成绩报表学生成绩报表3610.2.3 根据输入的参数创建报表根据输入的参数创建报表可以将一个变量的内容或将文本框中输入的可以将一个变量的内容或将文本框中输入的内容作为参数传递给数据环境设计器中的查内容作为参数传递给数据环境设计器中的查询。下面将举例说明怎样向一个用于报表生询。下面将举例说明怎样向一个用于报表生成的查询中传递参数。成的查询中传递参数。【例【例10.8】打印报表中显示
43、指定姓名的学生】打印报表中显示指定姓名的学生记录。记录。要求:在文本框中输入姓名,单击要求:在文本框中输入姓名,单击打印预打印预览览按钮,将显示报表,其中显示所输入姓按钮,将显示报表,其中显示所输入姓名的学生记录。名的学生记录。37设计过程如下:设计过程如下:(1)启动)启动VB,新建一个数据工程。此工程,新建一个数据工程。此工程中将自动包含一个窗体,一个中将自动包含一个窗体,一个DataEnvironment1和一个和一个DataReport1。(2)建立数据源连接:打开)建立数据源连接:打开DataEnvironment1窗口,将窗口,将Connection1改名为:改名为:ChengJi
44、;鼠标右击;鼠标右击该连接对象,在弹出的快捷菜单中选择该连接对象,在弹出的快捷菜单中选择属属性性命令,打开属性窗口;选择命令,打开属性窗口;选择连接连接选项卡,选项卡,选择数据源名称为前边所配置好的选择数据源名称为前边所配置好的ODBC数数据源:据源:cjgl。单击。单击测试连接测试连接按钮,提示按钮,提示“连接成功连接成功”信息即可。信息即可。38(3)添加命令对象:鼠标右击连接对象)添加命令对象:鼠标右击连接对象ChengJi,在弹出的快捷菜单中选择,在弹出的快捷菜单中选择添加命添加命令令命令对象命令对象Command1,改名为:,改名为:XueSheng;右击该命令对象;右击该命令对象X
45、ueSheng,在弹出的菜单中选择在弹出的菜单中选择属性属性,打开属性窗口,打开属性窗口选择选择SQL语句语句单选钮,输入下面的单选钮,输入下面的SQL语语句:句:Select 学号,姓名,性别,生日学号,姓名,性别,生日 From 学学生信息表生信息表 Where 姓名姓名=?图10.18 命令对象属性SQL语句39(4)在属性窗口中单击)在属性窗口中单击参数参数选项卡,设选项卡,设置有关参数如图置有关参数如图10.19。图10.19 命令对象的参数设置40(5)打开)打开DataReport1设计窗口,设置属设计窗口,设置属性如下:性如下:lDataSource:DataEnvironme
46、nt1lDataMember:XueSheng右击右击DataReport1设计窗口中设计窗口中细节区细节区,在,在弹出的菜单中选择弹出的菜单中选择检索结构检索结构命令,然后将命令,然后将图图10.20中的命令对象中的命令对象XueSheng拖放到细拖放到细节区,调整好报表的布局节区,调整好报表的布局 41图10.22 窗体的设计(6)设计窗体如图)设计窗体如图10.22。添加一个文本框添加一个文本框Text1添加按钮,添加按钮,改名为改名为CmdPrint,Caption属性为:打印预览。属性为:打印预览。添加一个标签添加一个标签Label1,设置标题属性为:输入姓名。设置标题属性为:输入姓
47、名。编写按钮的单击事件过程代码如下:编写按钮的单击事件过程代码如下:Private Sub CmdPrint_Click()DataEnvironment1.XueSheng Text1.TextDataReport1.ShowEnd Sub 42运行程序,在文本框中输入姓名,如图运行程序,在文本框中输入姓名,如图10.22,单击,单击打印预览打印预览按钮,显示的打印按钮,显示的打印报表如图报表如图10.23所示。所示。图10.23 打印报表运行结果43若想实现:输入某个姓(例如:王)则打印所有姓若想实现:输入某个姓(例如:王)则打印所有姓王的学生记录,要用模糊查询功能。可对该例做如王的学生记
48、录,要用模糊查询功能。可对该例做如下改进:下改进:将图将图10.20中输入的中输入的SQL语句中的语句中的“=”号改为号改为“Like”,即输入的,即输入的SQL语句如下:语句如下:Select 学号,姓名,性别,生日学号,姓名,性别,生日 From 学生信息学生信息表表 Where 姓名姓名 Like?编写编写打印预览打印预览按钮的单击事件过程代码如下:按钮的单击事件过程代码如下:Private Sub Command2_Click()DataEnvironment1.XueSheng Text1.Text&“%”DataReport1.ShowEnd Sub 运行程序,在文本框中输入:王,
49、单击运行程序,在文本框中输入:王,单击打印预览打印预览按钮,显示的打印报表如图按钮,显示的打印报表如图10.24所示。所示。图10.24 打印报表运行结果4410.3 创建分组报表创建分组报表在在DataEnvironment中,可以用层次结构中,可以用层次结构的命令对象建立分组报表,或用分组命令对的命令对象建立分组报表,或用分组命令对象建立分组报表。象建立分组报表。10.3.1 用关系层次结构的命令对象建立分用关系层次结构的命令对象建立分组报表组报表如果将数据显示成如图如果将数据显示成如图10.25所示,即按课所示,即按课程名称分组显示,则可以使数据关系层次清程名称分组显示,则可以使数据关系
50、层次清晰。晰。这就需要建立关系层次结构的命令对象,它这就需要建立关系层次结构的命令对象,它适合于多表查询的情况。适合于多表查询的情况。图10.25 分组显示成绩报表45【例【例10.9】建立按课程名称分组的成绩报表。】建立按课程名称分组的成绩报表。(1)建立命令对象,取名为)建立命令对象,取名为“成绩分组区成绩分组区”该部分返回的记录字段应该是用于分组的字段。操该部分返回的记录字段应该是用于分组的字段。操作步骤如下。作步骤如下。打开上例工程,在打开上例工程,在“DataEnvironment1”中的中的连接对象连接对象ChengJiGL中,添加新命令,然后右击中,添加新命令,然后右击该命令,选