此演练显示了如何在 Microsoft Visual Studio 2005 Windows 应用程序项目中根据 AdventureWorks 示例数据库创建基本表报表。您将执行以下操作:向项目添加报表模板、为 AdventureWorks 数据库设置连接信息、定义查询、添加表数据区域以及向 Windows 窗体添加 ReportViewer Windows 窗体控件,以使应用程序的用户可以查看报表。
若要使用此演练,您必须有一个可以使用的示例数据存储区。如果您没有示例数据存储区,可以从 http://www.microsoft.com/downloads 下载 AdventureWorks 示例数据库(在“搜索以下载”文本框中输入“SQL Server 2005 Express Edition 文档和示例”)。您可以使用 SQL Server Express 或支持连接到数据库的 SQL Server 实例。
此演练假定您使用的是 SQL Server Express 和 AdventureWorks 数据库。
对于此示例,应用程序是使用 Microsoft Visual Basic 创建的。
-
打开 Visual Studio。在“文件”菜单上,指向“新建”,然后选择“项目”。
-
在“项目类型”窗格中,选择 Visual Basic。
-
在“模板”窗格中,选择“Windows 应用程序”来创建 Microsoft Windows 应用程序。
-
在“名称”框中,键入 BasicReport。
-
在“位置”框中,输入您要保存项目的目录,或单击“浏览”导航到所需位置。将打开 Windows 窗体设计器,显示您创建的项目的 Form1。
-
在解决方案资源管理器中,右键单击“报表”,指向“添加”,再单击“新建项”。
注意 |
|---|
| 如果“解决方案资源管理器”窗口不可见,请单击“查看”菜单中的“解决方案资源管理器”。 |
-
在“添加新项”对话框中,单击“报表”。
-
在“名称”中,键入 Sales Orders.rdlc,再单击“添加”打开图形设计图面。这是 Visual Studio 2005 的报表设计器组件。
-
在解决方案资源管理器中,右键单击名为 BasicReport 的项目(不是解决方案),指向“添加”,然后选择“新建项”。
-
在“添加新项”对话框中,单击“数据集”。
-
为数据集输入名称,再单击“添加”。这将名为 DataSet1.xsd 的新 XSD 文件添加到项目中,并打开数据集设计器。
-
在数据集设计器模式下,打开工具箱,然后将 TableAdapter 拖至数据集设计图面。这将启动 TableAdapter 配置向导。
-
在“选择您的数据连接”页中,单击“新建连接”。
-
在“数据源”对话框中,选择 Microsoft SQL Server。在“服务器名称”对话框中,输入 AdventureWorks 数据库所在的服务器。一旦连接上,请从数据库下拉列表中选择 AdventureWorks,再单击“确定”继续到向导的下一页。
-
在“将连接字符串保存到应用程序配置文件中”页上,为连接字符串键入名称或接受默认的 AdventureWorksConnectionString。单击“下一步”。
-
在“选择命令类型”页上,选择“使用 SQL 语句”。
-
在“输入 SQL 语句”页上,输入以下 Transact-SQL 查询以检索 AdventureWorks 数据库中的数据,再单击“完成”:
SELECT S.OrderDate, S.SalesOrderNumber, S.TotalDue, C.FirstName, C.LastName
FROM Sales.SalesOrderHeader S INNER JOIN
Person.Contact C ON S.ContactID = C.ContactID
您还可以单击“查询生成器”按钮,然后使用查询生成器来创建自己的查询,并使用“执行查询”按钮来对其进行检查。
-
在“选择要生成的方法”页上,接受默认值“填充 DataTable”(“方法名称”:Fill)和“返回 DataTable”(“方法名称”:GetData)。单击“下一步”。
-
在“向导结果”页上,单击“完成”。
-
在“数据集设计器”页上,应看到 DataTable1,其中列出了从查询定义中得到的列。在“数据”菜单上,选择“显示数据源”并展开 DataTable1 节点来查看这些行。在下一个过程中将数据绑定到您的报表时使用“数据源”窗口。
-
以图形设计模式打开 Sales Orders.rdlc。
-
在工具箱中,单击“表”,再单击设计图面。报表设计器将在设计图面的宽度内绘制一个包含三列的表。
-
在“数据源”窗口中,展开报表数据集以显示字段。
-
将“数据源”窗口中的 OrderDate 字段拖至该表中第一列的中间行(详细信息行)。
将字段拖至中间单元时,会发生两件事。首先,详细信息单元将包含文本“=Fields!OrderDate.Value”。该文本是为 OrderDate 字段指定数据值的字段表达式。添加到详细信息行的字段始终被指定为表达式。其次,列标题值自动放置在紧邻字段表达式上面的第一行。默认情况下,该列是字段的名称。
-
将“数据集”窗口中的 SalesOrderNumber 字段拖至该表中第二列的中间行(详细信息行)。
-
将“数据集”窗口中的 TotalDue 字段拖至该表中第三列的中间行(详细信息行)。
以下关系图显示了已填充了字段 OrderDate、SalesOrderNumber 和 TotalDue 的表数据区域。
-
单击表,以便在表的上方和旁边显示列句柄和行句柄。
注意 |
|---|
| 句柄是显示在表的上方和旁边的灰框。您可以使用句柄对列、行和表本身执行各种操作。穿过表顶部上下拉伸的句柄是列句柄。沿着表一侧拉伸的句柄是行句柄。列句柄和行句柄的交汇处是角部句柄。若要查看表句柄的示例,请参阅添加表数据区域。 |
-
右键单击任何行的句柄,再单击“插入组”。
-
在“常规”选项卡上的“分组方式”框中,在第一行选择 =Fields!LastName.Value,在第二行选择 =Fields!FirstName.Value。此操作将按销售人员的姓名对数据进行分组。
-
在“排序”选项卡上的“排序方式”框中,在第一行选择 =Fields!LastName.Value,在第二行选择 =Fields!FirstName.Value,它们都按“升序”排序。此操作将按销售人员的姓名对分组进行排序。
-
单击“确定”。组头和组尾这两个新行将添加到表中。
-
单击表,以便在表的上方和旁边显示列句柄和行句柄。
-
在第一列 (Order Date) 上,右键单击句柄,再单击“在左侧插入列”。
-
单击新列中的第二个单元,然后键入以下表达式。第二个单元应该位于在前面的步骤中添加的新组的行中。
=Fields!FirstName.Value & " " & Fields!LastName.Value
-
单击第一列中的第一个单元,然后键入“销售人员”。这是表格表头中列的标签。
该表应与以下关系图类似。
-
单击表,以便在表的上方和旁边显示列句柄和行句柄。
-
右键单击角部句柄,再单击“属性”按钮。
注意 |
|---|
| 角部句柄是指列句柄和行句柄交汇处的句柄。 |
-
在“排序”选项卡的“排序方式”框中,选择 =Fields!OrderDate.Value。此时将按订单日期对详细信息数据排序。
-
单击“确定”。
“表属性”对话框应与以下关系图类似。
-
右键单击包含 OrderDate 字段表达式的单元,再单击“属性”。将显示“文本框属性”对话框。
-
打开“格式”选项卡,单击浏览按钮(以省略号 […] 按钮标签表示)打开“选择格式”对话框。
-
对于“格式”,请依次选择“标准”、“日期”,然后选择列表中的第三个示例(短日期)。
-
单击“确定”关闭“选择格式”对话框,然后再次单击“确定”关闭“文本框属性”对话框。
-
右键单击包含 TotalDue 字段表达式的单元,再单击“属性”。
-
打开“格式”选项卡,单击浏览按钮(以省略号 […] 按钮标签表示)打开“选择格式”对话框。
-
对于“格式”,请依次选择“标准”、“货币”,单击“确定”,然后再次单击“确定”关闭“文本框属性”对话框。
-
单击表,以便在表的上方和旁边显示列句柄和行句柄。
-
选择第一行、第二行和第四行(包含列标题标签的行、组头行和组尾行)的行句柄,再单击格式设置工具栏上的“粗体”(B) 按钮。
注意 |
|---|
| 若要选择多项,请按住 Ctrl 键,同时单击各项。 |
-
指向列句柄之间的行,使游标变为双箭头。拖动列调整大小。
添加 ReportViewer 控件并生成应用程序
-
切换到设计模式。
-
将 Visual Studio 工具箱的“数据”部分中的 ReportViewer 图标拖至窗体。根据需要调整窗体宽度和 ReportViewer 控件宽度。
-
通过单击右上角的三角形来打开 ReportViewer 控件的智能标记面板。单击“选择报表”下拉列表,然后选择 SalesOrder.rdlc。
-
将所有文件保存在项目中,然后按 F5 来预览报表和应用程序。
参考信息
Microsoft.Reporting.WinForms.ReportViewer.Drillthrough
Microsoft.Reporting.WinForms.LocalReport.SubreportProcessing
Microsoft.Reporting.WebForms.ReportViewer.Drillthrough
Microsoft.Reporting.WebForms.LocalReport.SubreportProcessing
概念
使用“ReportViewer 任务”智能标记面板
其他资源
示例和演练