Reporting Services 报表服务器
A.创建报表服务器项目
1. 单击“开始”,依次指向“程序”和 Microsoft SQL Server 2008,然后单击 Business Intelligence Development Studio。
2. 在“文件”菜单上,指向“新建”,再单击“项目”。
3. 在“项目类型”列表中,单击“商业智能项目”。
4. 在“模板”列表中,单击“报表服务器项目”。
5. 在“名称”中,键入 Tutorial。
6. 单击“确定”以创建项目。
解决方案资源管理器中将显示 Tutorial 项目。
B.创建新的报表定义文件
1. 在解决方案资源管理器中,右键单击“报表”,指向“添加”,再单击“新建项”。
注意: |
如果“解决方案资源管理器”窗口不可见,请单击“视图”菜单中的“解决方案资源管理器”。 |
2. 在“添加新项”对话框的“模板”下,单击“报表”。
3. 在“名称”中,键入 Sales Orders.rdl,再单击“添加”。
此时报表设计器将打开,并在“设计”视图中显示新的 .rdl 文件。
报表设计器是在 Business Intelligence Development Studio 中运行的 Reporting Services 组件。它包含两个视图:“设计”和“预览”。单击各个选项卡可更改视图。
在“报表数据”窗格中定义数据。在“设计”视图中定义报表布局。可以在“预览”视图中运行报表并查看其外观。
向“教程”项目添加报表之后,您需要定义“数据源”,它是报表从关系数据库、多维数据库或其他资源访问数据所使用的一组连接信息。
C.设置连接
在本课中,您将使用 AdventureWorks2008 示例数据库作为数据源。本教程假定此数据库位于本地计算机上安装的默认 SQL Server 数据库引擎实例中。
1. 在“报表数据”窗格中,单击“新建”,然后单击“数据源”。
2.
注意: |
如果“报表数据”窗格不可见,请单击“视图”菜单上的“报表数据”。 |
3. 在“名称”中,键入 AdventureWorks。
4. 确保已选中“嵌入连接”。
5. 在“类型”中,选择 Microsoft SQL Server。
6. 在“连接字符串”中,键入以下内容:
|
复制代码 |
Data source=localhost; initial catalog=AdventureWorks2008 |
7. 该连接字符串假定 Business Intelligence Development Studio、报表服务器和 AdventureWorks2008 数据库都已安装在本地计算机中,并且您拥有登录 AdventureWorks2008 数据库的权限。
注意: |
如果使用的是带高级服务的 SQL Server Express 或命名实例,则连接字符串必须包括实例信息: Data source=localhost\SQLEXPRESS; initial catalog=AdventureWorks2008 有关连接字符串的详细信息,请参阅连接数据源 (Reporting Services)和“数据源属性”对话框 ->“常规”。 |
8. 单击“确定”。名为 AdventureWorks 的数据源即被添加到“报表数据”窗格中。
D.为报表数据定义 Transact-SQL 查询
1. 在“报表数据”窗格中,单击“新建”,然后单击“数据集”。此时将打开“数据集属性”对话框。
2. 在“名称”框中,键入 AdventureWorksDataset。
3. 确保数据源名称 AdventureWorks 位于“数据源”文本框中,并确保“查询类型”为“文本”。
4. 将以下 Transact-SQL 查询键入(或复制并粘贴)到“查询”框中。
|
复制代码 |
SELECT soh.OrderDate AS [Date], soh.SalesOrderNumber AS [Order], pps.Name AS Subcat, pp.Name as Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotal FROM Sales.SalesPerson sp INNER JOIN Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN ON sd.ProductID = pp.ProductID INNER JOIN Production.ProductSubcategory AS pps ON pp.ProductSubcategoryID = pps.ProductSubcategoryID INNER JOIN Production.ProductCategory AS ppc ON ppc.ProductCategoryID = pps.ProductCategoryID GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonID HAVING ppc.Name = 'Clothing' |
5. (可选)单击“查询设计器”按钮。查询将在基于文本的查询设计器中显示。通过单击“编辑为文本”,可以切换到图形查询设计器。通过单击查询设计器工具栏上的“运行”(!)按钮来查看查询结果集。
您将看到来自 AdventureWorks2008 数据库中四个不同表的六个字段的数据。查询利用别名等 Transact-SQL 功能。例如,SalesOrderHeader 表称为 soh。
E.向报表布局中添加表数据区域和字段
1. 在“工具箱”中,单击“表”,再单击设计图面。报表设计器将在设计图面中心绘制一个具有三列的数据区域。
注意: |
“工具箱”可能显示为“报表数据”窗格左侧的一个选项卡。若要打开“工具箱”,请将指针移到“工具箱”选项卡上。如果“工具箱”不可见,请单击“视图”菜单上的“工具箱”。 |
2. 在“报表数据”窗格中,展开 AdventureWorksDataset 数据集以显示字段。
3. 将 Date 字段从“报表数据”窗格拖到表的第一列中。
将字段拖到第一列中时,会发生两件事。首先,数据单元将在方括号中显示字段名称,也称为“字段表达式”:[Date]
。其次,列标题值自动添加到紧邻字段表达式上面的标题行。默认情况下,该列是字段的名称。您可以选中标题行文本,然后键入一个新名称。
4. 将 Order 字段从“报表数据”窗格拖到表的第二列中。
5. 将 Product 字段从“报表数据”窗格拖到表的第三列中。
6. 将 Qty 字段拖到第三列的右边缘,直到显示一个垂直光标且鼠标指针带有加号 [+] 为止。释放鼠标按钮后,将为 [Qty]
创建第四列。
7. 请以相同方式添加 LineTotal 字段,并创建第五列。
以下关系图显示已由下列字段填充的表数据区域:Date、Order、Product、Qty 和 Line Total。
预览报表
通过预览报表,您可以不必先将报表发布到报表服务器,即可轻松查看呈现的报表。您可能希望在设计时频繁预览报表。
F.预览报表
- 单击“预览”选项卡。报表设计器将运行此报表,并将其显示在“预览”视图中。
下图显示了“预览”视图中的部分报表。
请注意,Line Total 列中货币的小数点后面有六个小数位,并且日期具有不必要的时间戳。此格式问题将在下一课中进行修复。
注意: |
您可以在预览报表前后保存报表项目。在“文件”菜单上,单击“全部保存”。 |