数据报表部分数据报表设计器由如下对象组成,
DataReport 对象—与 Visual Basic 窗体类似,DataReport 对象同时具有一个可视的设计器和一个代码模块。可以使用设计器创建报表的布局。也可以向设计器的代码模块添加代码,以采用编程方式调整设计器中包含的控件或部分的格式。
Section 对象—数据报表设计器的每一个部分由 Sections 集合中的一个 Section 对象表示。设计时,每一部分由一个可以单击以选择页的标头和可以放置和定位控件的窗格表示。可以使用对象及其属性在报表生成之前对其进行动态重新配置。
Data Report 控件—仅包含可在数据报表设计器上工作的特殊控件。(注意:不能在数据报表设计器上使用 Visual Basic 的内部控件或任何 ActiveX 控件)。这些控件可以在Visual Basic Toolbox中找到,但是它们被放置在一个独立的名为“数据报表”的选项卡上。
数据报表设计器的部分缺省的数据报表设计器包含如下这些部分,
报表标头—包含显示在一个报表开始处的文本,例如报表标题、作者或数据库名。如果想把报表标头作为报表的第一页,设置它的 ForcePageBreak 属性为 rptPageBreakAfter。
页标头—包含在每一页顶部出现的信息,例如报表的标题。
分组标头/注脚—包含数据报表的一个“重复”部分。每一个分组标头与一个分组注脚相匹配。标头和注脚对与数据环境设计器中的一个单独的 Command 对象相关联。
细节—包含报表的最内部的“重复”部分(记录)。详细部分与数据环境层次结构中最低层的 Command 对象相关联。
页注脚—包含在每一页底部出现的信息,例如页数。
报表注脚—包含报表结束处出现的文本,例如摘要信息或一个地址或联系人姓名。报表注脚出现在最后一个页标头和页注脚之间。
数据报表控件当一个新的数据报表设计器被添加到一个工程时,下列控件将自动地被放置在名为DataReport的“工具箱”选项卡中,
TextBox 控件(RptTextBox)—允许规定文本格式,或指定一个 DataFormat。
Label 控件(RptLabel)—允许在报表上放置标签、标识字段或部分。
Image 控件(RptImage)—使用户能在报表上放置图形。注意,该控件不能被绑定到数据字段。
Line 控件(RptLine)—使用户能在报表上绘制标尺,以进一步区分部分。
Shape 控件(RptShape)—使用户能在报表上放置矩形、三角形或圆形(椭圆型)。
Function 控件(RptFunction)—一个特殊的文本框,报表生成时计算数值。
创建一个简单数据报表

本主题创建了一个简单数据报表,该报表使用数据环境设计器作为数据源。数据环境设计器使用和 Visual Basic一起提供的 NorthWind 数据库创建一个简单的层次结构游标。该游标包含两个表,Customers 和 Orders,并使用“CustomerID”字段链接两个表。完成的报表类似于下面的插图。
简单数据报表:客户的订单日期

在开始逐步处理之前,确保计算机上存在 Northwind 数据库(Nwind.mdb)。如果不存在,从 Visual Basic CD 复制一份文件到计算机的硬盘上。
要在数据环境设计器中创建一个简单的层次结构游标,请按照下列步骤执行,
创建一个新的“标准 EXE”工程。
在“工程”菜单上,单击“添加 Data Enviroment”向工程中添加一个设计器。如果设计器没有在“工程”菜单上列出,则单击“部件”。单击“设计器”选项卡。并单击“数据环境”把设计器添加到菜单上。
注意 最初为项目加载的四种ActiveX设计器在“工程”菜单上列出。如果加载了超过四个设计器,后面的设计器可以从“工程”菜单的“更多 ActiveX 设计器”子菜单中获得。
在“数据链接属性”对话框上单击“Microsoft Jet 3.51 OLE DB Provider”,这是为访问 Jet 数据库选择正确的 OLE DB 供应商。
单击“下一步”按钮进入“连接”选项卡。
单击第一个文本框旁边的省略按钮(…)。
用“选择 Access 数据库”对话框浏览到 nwind.mdb 文件,它被安装在 Program Files\Microsoft Visual Studio\Vb98 目录下。
单击“确定”关闭对话框。
右键单击“Connection1”图标,单击“重命名”,把图标名改为“Northwind”。
右键单击“Northwind”图标,然后单击“添加命令”显示“Command1”对话框。在对话框中,如下所示设置属性,
属性
设置值
Command Name
Customers
Connection
Northwind
DataBase Object
Table
Object Name
Customers
单击“确定”结束对话框。
右键单击“Customers”命令,并单击“添加子命令”显示“Command2”对话框。在对话框中,如下所示设置属性,
属性
设置值
Command Name
Orders
Connection
Northwind
DataBase Object
Table
Object Name
Orders
单击“关联”选项卡。应该选中“与父命令对象相关联”复选框。“父”框应该包含“Customers”;“父字段”和“子字段/参数”框都应该包含“CustomerID”。
在设计关系数据库时,对于链接字段,习惯上相关的表要使用相同的名字。在这种情况下,链接字段都被命名为 CustomerID。数据环境设计器自动地在对话框中匹配这样的对。
单击“添加”。单击“确定”关闭对话框。
单击“添加”按钮向 Command 对象添加关系。在关闭了对话框之后,数据环境设计器通过把两个命令显示为一个层次结构来反映关系。该层次结构将被用于创建数据报表。
根据下面的设置值设置工程和设计器的属性,然后保存工程,
对象
属性
设置值
Project
Name
PrjNwind
DataEnvironment
Name
DeNwind
Form
Name
FrmShowReport
创建数据报表一旦创建了数据环境设计器,就可以创建一个数据报表。因为并不是数据环境中所有的字段在一个数据报表中都有用,这一系列的主题创建一个受限制的报表,只显示几个字段。
要创建一个新的数据报表,请按照下列步骤执行,
在“工程”菜单上,单击“添加 Data Report”,Visual Basic 将把它添加到您的工程中。如果设计器不在“工程”菜单上,单击“部件”。单击“设计器”选项卡,并单击“Data Report”把设计器添加到菜单上。
注意 为工程加载的前四种 ActiveX 设计器在“工程”菜单上列出。如果加载了多于四个设计器,后面的设计器可以从“工程”菜单的“更多 ActiveX 设计器”子菜单中获得。
根据下面的表设置 DataReport 对象的属性,
属性
设置值
Name
rptNwind
Caption
Northwind Data Report
在“属性”窗口上,单击“数据源”,然后单击“deNwind”。然后单击“DataMember”并单击“Customers”。
重点 要把 DataSource 属性设置为 deNwind,数据环境设计器必须为打开的。如果数据环境设计器是关闭的,按下 CTRL+R 键显示“工程”窗口,然后双击数据环境图标。
右键单击数据报表设计器,并单击“检索结构”。
您已经向设计器添加了一个新的分组。每一个分组都同数据环境中的 Command 对象有“一对一”对应关系;在这种情况下,新的分组与客户的 Command 对象相对应。同时也要注意分组标头有一个与之匹配的分组注脚部分。
注意 如果某个 Command 对象有多于一个的子对象 — 相互“平行”的子 Command 对象,则 Data Environment 使您可以创建该 Command 对象的层次结构。Data Report 设计器,却没有那么灵活,在同一时间不能显示多于一个的子对象。此时,当执行一个 Retrieve Structure Command命令时,Data Report 将只显示第一个子 command,其他的都不显示。所以,您应该避免创建带有“平行”子 command的 Command 层次结构。
从数据环境设计器,把“CompanyName”字段(在“Customers”命令下)拖到分组标头(Customers_Header)部分。
分组标头部分可以包含 Customers 命令的任何字段,然而,出于演示目的,此时只显示 Customer 名。
删除名为“Label1”的 Label 控件(rptLabel)。
如果不希望 Label 控件包括在 TextBox 控件中,可以在数据环境设计器的“选项...”对话框的“字段映射”选项卡上撤消对“Drag and Drop Fields Caption”选项的选择。
从数据环境设计器中,把“OrderDate”字段(在Orders命令下)拖到细节(Orders_Detail)部分。删除Label控件。
细节部分表示最内层的“重复”部分,因而与数据环境层次结构(OrdersCommand对象)中最底层的 Command 对象相对应。
重新调整数据环境设计器部分的大小,使之与下面的插图类似,

重新调整细节部分的高度,使它尽可能的矮是很重要的,因为高度将会与为每一个 CompanyName 返回的 OrderDate 相乘。OrderDate 文本框下面或上面的任何多余位置将在最后的报表中导致不必要的空间。
保存工程。
使用 Show 方法预览数据报表既然数据环境和 Data Report 对象已经创建,就几乎准备好运行工程了。还剩下一步:写代码以显示数据报表。
要在运行时显示数据报表,请按照下列步骤执行,
在“工程资源管理器”窗口上,双击“frmShowReport”图标,显示窗体设计器。
在“工具箱”上,单击“通用”选项卡。
当把一个数据报表设计器添加到工程时,数据报表设计器的控件被添加到名为“Data Report”的选项卡上。要使用标准的 Visual Basic 控件,必须切换到“通用”选项卡。
单击“CommandButton”图标并在窗体上绘制一个“CommandButton”。
根据下面的表设置 Command1 控件的属性,
属性
设置值
Name
CmdShow
Caption
Show Report
在按钮的 Click 事件中,粘贴下面的代码。
Private Sub cmdShow_Click()
rptNwind.Show
End Sub
保存并运行工程。
单击“显示报表”,在打印预览方式中显示报表。
可选的—将数据报表作为启动对象设置在没有代码的情况下,也可以显示报表。
在“工程”菜单上,单击“prjNwind”属性。
在“启动对象”框中,选择“rptNwind”。
保存并运行工程。
注意 如果使用这种方法,可以从工程中把Form对象删除。
步骤该主题是帮助您创建一个示例数据报表的一系列步骤中的一部分:

请参阅
进行下一步
扩展数据报表
创建一个简单数据报表本主题创建了一个简单数据报表,该报表使用数据环境设计器作为数据源。数据环境设计器使用和 Visual Basic一起提供的 NorthWind 数据库创建一个简单的层次结构游标。该游标包含两个表,Customers 和 Orders,并使用“CustomerID”字段链接两个表。完成的报表类似于下面的插图。
简单数据报表:客户的订单日期

在开始逐步处理之前,确保计算机上存在 Northwind 数据库(Nwind.mdb)。如果不存在,从 Visual Basic CD 复制一份文件到计算机的硬盘上。
要在数据环境设计器中创建一个简单的层次结构游标,请按照下列步骤执行,
创建一个新的“标准 EXE”工程。
在“工程”菜单上,单击“添加 Data Enviroment”向工程中添加一个设计器。如果设计器没有在“工程”菜单上列出,则单击“部件”。单击“设计器”选项卡。并单击“数据环境”把设计器添加到菜单上。
注意 最初为项目加载的四种ActiveX设计器在“工程”菜单上列出。如果加载了超过四个设计器,后面的设计器可以从“工程”菜单的“更多 ActiveX 设计器”子菜单中获得。
在“数据链接属性”对话框上单击“Microsoft Jet 3.51 OLE DB Provider”,这是为访问 Jet 数据库选择正确的 OLE DB 供应商。
单击“下一步”按钮进入“连接”选项卡。
单击第一个文本框旁边的省略按钮(…)。
用“选择 Access 数据库”对话框浏览到 nwind.mdb 文件,它被安装在 Program Files\Microsoft Visual Studio\Vb98 目录下。
单击“确定”关闭对话框。
右键单击“Connection1”图标,单击“重命名”,把图标名改为“Northwind”。
右键单击“Northwind”图标,然后单击“添加命令”显示“Command1”对话框。在对话框中,如下所示设置属性,
属性
设置值
Command Name
Customers
Connection
Northwind
DataBase Object
Table
Object Name
Customers
单击“确定”结束对话框。
右键单击“Customers”命令,并单击“添加子命令”显示“Command2”对话框。在对话框中,如下所示设置属性,
属性
设置值
Command Name
Orders
Connection
Northwind
DataBase Object
Table
Object Name
Orders
单击“关联”选项卡。应该选中“与父命令对象相关联”复选框。“父”框应该包含“Customers”;“父字段”和“子字段/参数”框都应该包含“CustomerID”。
在设计关系数据库时,对于链接字段,习惯上相关的表要使用相同的名字。在这种情况下,链接字段都被命名为 CustomerID。数据环境设计器自动地在对话框中匹配这样的对。
单击“添加”。单击“确定”关闭对话框。
单击“添加”按钮向 Command 对象添加关系。在关闭了对话框之后,数据环境设计器通过把两个命令显示为一个层次结构来反映关系。该层次结构将被用于创建数据报表。
根据下面的设置值设置工程和设计器的属性,然后保存工程,
对象
属性
设置值
Project
Name
PrjNwind
DataEnvironment
Name
DeNwind
Form
Name
FrmShowReport
创建数据报表一旦创建了数据环境设计器,就可以创建一个数据报表。因为并不是数据环境中所有的字段在一个数据报表中都有用,这一系列的主题创建一个受限制的报表,只显示几个字段。
要创建一个新的数据报表,请按照下列步骤执行,
在“工程”菜单上,单击“添加 Data Report”,Visual Basic 将把它添加到您的工程中。如果设计器不在“工程”菜单上,单击“部件”。单击“设计器”选项卡,并单击“Data Report”把设计器添加到菜单上。
注意 为工程加载的前四种 ActiveX 设计器在“工程”菜单上列出。如果加载了多于四个设计器,后面的设计器可以从“工程”菜单的“更多 ActiveX 设计器”子菜单中获得。
根据下面的表设置 DataReport 对象的属性,
属性
设置值
Name
rptNwind
Caption
Northwind Data Report
在“属性”窗口上,单击“数据源”,然后单击“deNwind”。然后单击“DataMember”并单击“Customers”。
重点 要把 DataSource 属性设置为 deNwind,数据环境设计器必须为打开的。如果数据环境设计器是关闭的,按下 CTRL+R 键显示“工程”窗口,然后双击数据环境图标。
右键单击数据报表设计器,并单击“检索结构”。
您已经向设计器添加了一个新的分组。每一个分组都同数据环境中的 Command 对象有“一对一”对应关系;在这种情况下,新的分组与客户的 Command 对象相对应。同时也要注意分组标头有一个与之匹配的分组注脚部分。
注意 如果某个 Command 对象有多于一个的子对象 — 相互“平行”的子 Command 对象,则 Data Environment 使您可以创建该 Command 对象的层次结构。Data Report 设计器,却没有那么灵活,在同一时间不能显示多于一个的子对象。此时,当执行一个 Retrieve Structure Command命令时,Data Report 将只显示第一个子 command,其他的都不显示。所以,您应该避免创建带有“平行”子 command的 Command 层次结构。
从数据环境设计器,把“CompanyName”字段(在“Customers”命令下)拖到分组标头(Customers_Header)部分。
分组标头部分可以包含 Customers 命令的任何字段,然而,出于演示目的,此时只显示 Customer 名。
删除名为“Label1”的 Label 控件(rptLabel)。
如果不希望 Label 控件包括在 TextBox 控件中,可以在数据环境设计器的“选项...”对话框的“字段映射”选项卡上撤消对“Drag and Drop Fields Caption”选项的选择。
从数据环境设计器中,把“OrderDate”字段(在Orders命令下)拖到细节(Orders_Detail)部分。删除Label控件。
细节部分表示最内层的“重复”部分,因而与数据环境层次结构(OrdersCommand对象)中最底层的 Command 对象相对应。
重新调整数据环境设计器部分的大小,使之与下面的插图类似,

重新调整细节部分的高度,使它尽可能的矮是很重要的,因为高度将会与为每一个 CompanyName 返回的 OrderDate 相乘。OrderDate 文本框下面或上面的任何多余位置将在最后的报表中导致不必要的空间。
保存工程。
使用 Show 方法预览数据报表既然数据环境和 Data Report 对象已经创建,就几乎准备好运行工程了。还剩下一步:写代码以显示数据报表。
要在运行时显示数据报表,请按照下列步骤执行,
在“工程资源管理器”窗口上,双击“frmShowReport”图标,显示窗体设计器。
在“工具箱”上,单击“通用”选项卡。
当把一个数据报表设计器添加到工程时,数据报表设计器的控件被添加到名为“Data Report”的选项卡上。要使用标准的 Visual Basic 控件,必须切换到“通用”选项卡。
单击“CommandButton”图标并在窗体上绘制一个“CommandButton”。
根据下面的表设置 Command1 控件的属性,
属性
设置值
Name
CmdShow
Caption
Show Report
在按钮的 Click 事件中,粘贴下面的代码。
Private Sub cmdShow_Click()
rptNwind.Show
End Sub
保存并运行工程。
单击“显示报表”,在打印预览方式中显示报表。
可选的—将数据报表作为启动对象设置在没有代码的情况下,也可以显示报表。
在“工程”菜单上,单击“prjNwind”属性。
在“启动对象”框中,选择“rptNwind”。
保存并运行工程。
注意 如果使用这种方法,可以从工程中把Form对象删除。
步骤该主题是帮助您创建一个示例数据报表的一系列步骤中的一部分:

请参阅
进行下一步
扩展数据报表