演练:创建 ReportViewer 报表
本演练演示如何在 Visual Studio Windows 窗体应用程序项目中基于 AdventureWorks2008 示例数据库创建简单的表报表。将使用报表向导向项目添加报表并向 Windows 窗体添加 ReportViewer Windows 窗体控件,以便该应用程序的用户可以查看报表。
有关使用 Visual Studio 报表设计器设计报表的更多信息,请参见报表设计器 (Visual Studio)。
先决条件
若要使用本演练,您必须有权访问 AdventureWorks2008 示例数据库。在本演练中使用的查询将不适用于 AdventureWorks 的早期版本。有关如何获取 AdventureWorks2008 示例数据库的更多信息,请参见演练:安装 AdventureWorks 数据库。
本演练假定您已经熟悉 Transaction-SQL 查询以及 ADO.NET DataSet 和 DataTable 对象。
创建新的 Windows 窗体应用程序项目
打开 Visual Studio。在**“文件”菜单上,指向“新建”,然后选择“项目”**。
在**“已安装的模板”窗格中,展开“其他语言”,然后选择“Visual Basic”**。
选择**“Windows 窗体应用程序”**。
在**“名称”框中,键入“SimpleReport”**。
在**“位置”框中,输入要保存项目的目录,或者单击“浏览”**以导航到该目录。
单击“确定”。
随即会打开 Windows 窗体设计器,其中将显示所创建的项目的**“Form1”**。
单击该窗体。从**“视图”菜单中选择“属性窗口”。展开“大小”属性,以显示“宽度”和“高度”。将“宽度”**设置为 500 像素。
定义数据集和数据表
在**“项目”菜单中,选择“添加新项”**。
在**“添加新项”对话框中,单击“数据集”。为数据集键入名称,然后单击“添加”。默认名称为“DataSet1.xsd”**。
这会向项目中添加一个新的 XSD 文件并打开数据集设计器。
从数据集设计器中的**“工具箱”,将“TableAdapter”**控件拖到设计图面上。
这将启动 TableAdapter 配置向导。
在“选择您的数据连接”页上,单击**“新建连接”**。
如果这是您首次在 Visual Studio 中创建数据源,则会显示**“选择数据源”页。在“数据源”框中,选择“Microsoft SQL Server”**。
在**“添加连接”**对话框中,执行以下步骤:
在**“服务器名称”**框中,输入 AdventureWorks2008 数据库所在的服务器。
默认的 SQL Server Express 实例为**“(local)\sqlexpress”**。
在**“登录到服务器”部分中,选择提供对数据的访问权限的选项。默认选项为“使用 Windows 身份验证”**。
在**“选择或输入数据库名称”下拉列表中,单击“AdventureWorks2008”**。
单击**“确定”继续返回到向导,然后单击“下一步”**。
如果在上一步中指定了**“使用 SQL Server 身份验证”**,则选择是在字符串中包含敏感数据还是在应用程序代码中设置信息的选项。
在**“将连接字符串保存到应用程序配置文件中”页上,为连接字符串键入名称或接受默认的“AdventureWorks2008ConnectionString”。单击“下一步”**。
在**“选择命令类型”页上,选择“使用 SQL 语句”,然后单击“下一步”**。
在**“输入 SQL 语句”页上,输入以下 Transact-SQL 查询以从 AdventureWorks2008 数据库中检索销售数据,然后单击“完成”**:
--SET DATEFORMAT mdy SELECT PC.Name AS Category, PS.Name AS Subcategory, DATEPART(yy, SOH.OrderDate) AS Year, 'Q' + DATENAME(qq, SOH.OrderDate) AS Qtr, SUM(DET.UnitPrice * DET.OrderQty) AS Sales FROM Production.ProductSubcategory PS INNER JOIN Sales.SalesOrderHeader SOH INNER JOIN Sales.SalesOrderDetail DET ON SOH.SalesOrderID = DET.SalesOrderID INNER JOIN Production.Product P ON DET.ProductID = P.ProductID ON PS.ProductSubcategoryID = P.ProductSubcategoryID INNER JOIN Production.ProductCategory PC ON PS.ProductCategoryID = PC.ProductCategoryID WHERE (SOH.OrderDate BETWEEN ('20020101') AND ('20031231')) GROUP BY DATEPART(yy, SOH.OrderDate), PC.Name, PS.Name, 'Q' + DATENAME(qq, SOH.OrderDate), PS.ProductSubcategoryID
您也可以单击**“查询生成器”按钮,然后使用查询生成器创建查询并使用“执行查询”**按钮对其进行验证。
单击**“完成”**。
现在,数据集设计器将显示**“DataTable1”的 DataTable 定义,其中各个字段均以查询的列和列别名命名(“Category”、“Subcategory”、“Year”、“Qtr”和“Sales”**)。在将数据绑定到报表时,将使用这些字段。
备注
如果需要更改数据表中的字段,请右击数据集设计器页上的“DataTable1”标头或“DataTable1TableAdapter”标头。选择“配置”,这将重新启动 TableAdapter 配置向导。
保存 DataSet1 文件。
使用报表向导添加新的报表定义文件
从**“项目”菜单中选择“添加新项”**。
在**“添加新项”对话框中,选择“报表向导”**。
在**“名称”中,键入“Sales Orders.rdlc”,然后单击“添加”**。
将会在该对话框的后面打开一个图形设计图面。
在**“数据集属性”页的“数据源”下拉列表中,选择您创建的“数据集”**。
**“可用数据集”框会使用您创建的“数据表”**自动更新。
单击**“下一步”**。
在**“排列字段”**页中,执行以下操作:
将**“Category”从“可用字段”拖到“行组”**框。
将**“Subcategory”下的“子类别”从“可用字段”拖到“行组”**框。
将**“Year”从“可用字段”拖到“列组”**框。
将**“Year”下的“Qtr”从“可用字段”拖到“列组”**框。
将**“Sales”从“可用字段”拖到“值”**框。
单击两次**“下一步”,然后单击“完成”**。
这将创建 .rdlc 文件并在报表设计器中将其打开。所设计的 tablix 会立即显示在设计图面中。
向报表添加标题
单击设计图面上的 tablix,以便在表的上方和旁边显示列句柄和行句柄。
备注
句柄是显示在 tablix 的上方和旁边的灰框。您可以使用句柄对列组、行组和 tablix 本身执行各种操作。穿过 tablix 的顶部上下拉伸的句柄是列句柄。沿着 tablix 的一侧拉伸的句柄是行句柄。列句柄和行句柄的交汇处是角部句柄。
单击角部句柄以选择整个 tablix,从而显示十字箭头。
通过拖动十字箭头在设计图面上向下移动 tablix。
从工具箱中,将**“文本框”**项拖到设计图面中的 tablix 的上方,然后通过拖动十字箭头定位 tablix。
在选择文本框后,键入“Company Sales”。如有必要,拖动文本框边框可将其展开。
在选择文本框后,在**“报表格式”工具栏中单击“加粗”按钮,然后在“字号”**框中选中 16pt。
在选择文本框后,在**“报表格式”工具栏中单击“前景色”**按钮。
在“选择颜色”对话框中,选择**“中灰蓝色”颜色,然后单击“确定”**。
向窗体中添加 ReportViewer 控件
在解决方案资源管理器中单击**“Form1.vb”**。
从**“视图”菜单中选择“设计器”**。
从“工具箱”的**“报表”部分将“ReportViewer”**控件拖动到窗体上。
通过单击右上角的智能标记标志符号,打开 ReportViewer1 控件的智能标记面板。单击**“选择报表”下拉列表,然后选择“SimpleReport.Sales Orders.rdlc”**。
在智能标记面板中,单击**“在父容器中停靠”**。
在本演练的剩余部分中,您可以随时生成应用程序并在窗体中查看报表。如果要查看报表设计的每次更改对最终报表的影响,可以在执行下面每个过程的最后一个步骤时都生成并查看报表。
(可选)按 F5 生成应用程序并在窗体中查看报表。
设置货币字段的格式
在 Sales Orders.rdlc 文件的报表设计器窗口中,右击包含**“[Sum(Sales)]”值的左上单元格,然后单击“文本框属性”**。
选择**“数字”**选项卡。
在**“类别”列表中选择“货币”**。
在**“符号”列表中,选择“英语(英国)”**。
单击**“确定”**关闭对话框。
对包含**“[Sum(Sales)]”**值的所有其他单元格执行相同的步骤。
(可选)按 F5 生成应用程序并查看报表。观察数字格式的更改。请注意不会进行货币转换,只会更改数字格式。
设置 tablix 布局的格式
在 Sales Orders.rdlc 文件的报表设计器窗口中,拖动光标以在 tablix 的左上角选择两个空单元格。
右击选定的单元格,然后选择**“合并单元格”**。
右击合并的单元格,然后选择**“文本框属性”**。
单击**“边框”选项卡。在“预览”**区域中,单击边框切换按钮以删除顶部和左侧边框。
单击**“确定”**。
单击 tablix 以显示其句柄。对于具有 Subcategory 标头的列,通过拖动列句柄的右侧展开列宽。这样您可以防止标头文本换行到下一行。
按 F5 生成应用程序并查看报表。
请参阅
参考
LocalReport.SubreportProcessing
LocalReport.SubreportProcessing
概念
其他资源
Designing and Implementing Reports Using Report Designer (Reporting Services)