教程:创建基本报表
第 1 课:创建报表服务器项目
若要在 SQL Server 中创建报表,必须先创建报表服务器项目以用于保存报表定义 (.rdl) 文件和报表所需的其他任何资源文件。然后,您将创建实际的报表定义文件、定义报表的数据源、定义数据集并定义报表布局。运行报表时,将检索实际数据并将其与布局相结合,然后呈现在屏幕上,以便执行导出、打印或保存操作。
在本课中,您将了解如何在 Business Intelligence Development Studio 中创建报表服务器项目。报表服务器项目用于创建在报表服务器中运行的报表。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl0215b1243,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl02img,"; </script> 创建报表服务器项目
1. 单击“开始”,依次指向“程序”和 Microsoft SQL Server 2005,再单击 Business Intelligence Development Studio。
2. 在“文件”菜单上,指向“新建”,再单击“项目”。
3. 在“项目类型”列表中,单击“商业智能项目”。
4. 在“模板”列表中,单击“报表服务器项目”。
5. 在“名称”中,键入 Tutorial。
6. 单击“确定”以创建项目。
解决方案资源管理器中将显示 Tutorial 项目。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl03f627dcf,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl03img,"; </script> 创建新的报表定义文件
1. 在解决方案资源管理器中,右键单击“报表”,指向“添加”,再单击“新建项”。
注意: |
如果解决方案资源管理器窗口不可见,请单击“视图”菜单中的“解决方案资源管理器”。 |
2. 在“添加新项”中,单击“报表”。
下面的关系图显示了“添加新项”对话框,该对话框用于向项目中添加报表和其他项。
3. 在“名称”中,键入 Sales Orders.rdl,再单击“添加”。
此时报表设计器将打开,并在“数据”视图中显示新的 .rdl 文件。
报表设计器是运行在 Business Intelligence Development Studio 中的 Reporting Services 组件。它包含三个视图:“数据”、“布局”和“预览”。单击各个选项卡可更改视图。
在“数据”视图中定义数据。在“布局”视图中定义报表布局。可以在“预览”视图中运行报表并查看其外观。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl0453ab17c,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl04img,"; </script> 下一个任务
您已经成功创建了 Tutorial 报表项目,并向该报表项目添加了报表定义 (.rdl) 文件。接下来,您将指定要用于报表的数据源。 See 第 2 课:设置连接信息.
第 2 课:设置连接信息
将报表添加到教程项目后,您需要定义一个可向报表提供数据的数据源。在 Reporting Service 中,您在报表中使用的数据包含在“数据集”中。数据集包括一个指向数据源的指针和将由报表使用的查询。
在本教程中,将使用 AdventureWorks 示例数据库作为数据源。本教程假定此数据库位于本地计算机上安装的 SQL Server 数据库引擎的默认实例中。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl0267e837f,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl02img,"; </script> 设置连接
1. 在“数据”选项卡中,展开页面顶部“数据集”下拉列表的内容,并选择“新建数据集”。此时,将显示“数据源”对话框。
2. 在“名称”中,键入 AdventureWorks。
3. 在“类型”中,选择 Microsoft SQL Server。
4. 在“连接字符串”中,键入以下内容:
复制代码
Data source=(local); initial catalog=AdventureWorks
该连接字符串假定 Business Intelligence Development Studio、报表服务器和 AdventureWorks 数据库都已安装在本地计算机中,并且您拥有登录 AdventureWorks 数据库的权限。
如果使用的是具有高级服务或命名实例的 SQL Server 2005 Express Edition,则连接字符串必须包括实例信息:
复制代码
Data source=localhost/SQLEXPRESS; initial catalog=AdventureWorks
有关连接字符串的详细信息,请参阅连接数据源和数据源(“常规”选项卡,报表设计器)。
5. 单击“确定”。AdventureWorks 将添加到“数据集”窗格中。
下面的关系图阐释了“数据源”对话框,这是一个用于指定到数据源的连接的对话框。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl07fdba0d6,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl07img,"; </script> 下一个任务
您已成功定义了到 AdventureWorks 示例数据库的连接。下一步,将创建报表。请参阅第 3 课:定义报表查询。
第 3 课:定义报表查询
已更新: 2005 年 12 月 5 日
定义了数据源之后,报表设计器将创建一个数据集,并显示可用于设计查询的通用查询设计器。在本教程中,您将创建一个查询,用于从数据库中检索销售订单信息。
通用查询设计器是默认的查询设计工具,因为它能处理复杂的 Transact-SQL 语句,并且直到运行报表时才对语句进行格式设置或验证。但是,如果您比较熟悉图形查询设计器,则可使用此工具代替通用查询设计器。查询设计器工具栏上的切换按钮可用来在工具之间进行切换。有关查询设计器的详细信息,请参阅 Reporting Services 中的查询设计工具。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl03c5928a3,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl03img,"; </script> 若要为报表数据定义 Transact-SQL 查询,请执行以下操作:
1. 将以下查询键入(或复制并粘贴)到通用查询设计器的 SQL 窗格中,SQL 窗格是设计工具中最上层的窗格。上述步骤下面所列的关系图显示了应该指定查询的位置。
复制代码
SELECT S.OrderDate, S.SalesOrderNumber, S.TotalDue, C.FirstName, C.LastName FROM HumanResources.Employee E INNER JOIN Person.Contact C ON E.ContactID = C.ContactID INNER JOIN Sales.SalesOrderHeader S ON E.EmployeeID = S.SalesPersonID
2. 若要查看查询的结果,请单击查询设计器工具栏上的“运行”(!) 按钮。
以下关系图显示了通用查询设计器,其中包含已复制到 SQL 窗格的查询。请注意,用于启用通用查询设计器的切换按钮已选中。如果要改用图形查询设计器,则可单击此按钮。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl052ee70b3,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl05img,"; </script> 下一个任务
您已成功指定了一个用于检索报表数据的查询。接下来将创建报表布局。请参阅第 4 课:添加表数据区域。
第 4 课:添加表数据区域
定义查询后,您可以开始定义报表布局。报表布局包括表、文本框、图像和要在报表中包括的其他项。在 Reporting Service 中,包含基础数据集中重复数据行的项是数据区域。可通过将数据区域和其他报表项拖放到“布局”选项卡的设计图面上来创建报表布局。一旦添加了数据区域,即可选择要添加到每个数据区域的字段。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl0233edf0a,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl02img,"; </script> 向报表布局中添加表数据区域和字段
1. 单击“布局”选项卡。
2. 在“工具箱”中,单击“表”,再单击设计图面。报表设计器将在设计图面的宽度内绘制一个具有三列的表。
注意: |
此时,“工具箱”可能显示为设计区域左侧的一个选项卡。若要打开“工具箱”,请将指针移到“工具箱”选项卡上。如果“工具箱”不可见,请单击“视图”菜单中的“工具箱”。 |
3. 在“数据库”窗口中,展开报表数据集以显示字段。
注意: |
如果“数据集”窗口不可见,请单击“视图”菜单中的“数据集”。 |
4. 将 OrderDate 字段从“数据集”窗口拖到此表第一列的中间行(详细信息行)中。
当将字段拖到中间单元时,会发生两件事。首先,详细信息单元将包含下面的文本:"=Fields!OrderDate.Value"。该文本是为 OrderDate 字段指定数据值的字段表达式。添加到详细信息行的字段始终被指定为表达式。其次,列标题值自动放置在紧邻字段表达式上面的第一行。默认情况下,该列是字段的名称。
5. 将 SalesOrderNumber 字段从“数据集”窗口拖到此表第二列的中间行(详细信息行)中。
6. 将 TotalDue 字段从“数据集”窗口拖到此表第三列的中间行(详细信息行)中。
注意: |
您在本教程的查询中不会使用所有字段,某些字段将在后续的教程中使用。 |
以下关系图显示已由下列字段填充的表数据区域:OrderDate、SalesOrderNumber 和 TotalDue。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl036717981,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl03img,"; </script> 下一个任务
您已成功定义了报表布局。下一步,您将预览报表以查看它的外观。请参阅第 5 课:预览基本报表。
第 5 课:预览基本报表
在本教程的这一部分,您可以预览表的内容。通过预览报表,您可以不必执行将报表发布到报表服务器的其他步骤,而轻松查看报表的外观。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl02a50dff8,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl02img,"; </script> 预览报表
1. 保存报表项目。在“文件”菜单中,单击“全部保存”。
2. 单击“预览”选项卡。报表设计器将运行此报表,并将其显示在预览视图中。
下图在“预览”窗口中显示此报表。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl03b3a18bf,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl03img,"; </script> 下一课
此步骤将结束本教程“创建基本报表”。若要向该报表添加更多功能,请在另一个教程:教程:向基本报表中添加分组、排序和格式设置中对该报表继续执行操作。
教程:向基本报表中添加分组、排序和格式设置
本教程旨在帮助您利用报表设计过程中的其他功能(基于在上一个教程中创建的基本表报表)。在本教程中,您将执行以下操作:打开报表项目,向表添加分组和排序,向表添加新列,添加小计,提供一些格式设置,预览报表以及将报表发布到报表服务器。
第 1 课:打开教程项目
本教程以在上一个教程中创建的“销售订单”报表为基础。如果您已经打开此报表,请跳过以下步骤:有关上一个教程的详细信息,请参阅教程:创建基本报表。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl03a98d16f,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl03img,"; </script> 打开现有报表项目
1. 单击“开始”,依次指向“程序”、Microsoft SQL Server 2005,再单击 Business Intelligence Development Studio。
2. 在“文件”菜单中,指向“打开”,再单击“项目/解决方案”。
3. 导航到在上一个教程中创建的项目文件的位置。该项目应该位于“教程”文件夹中。
4. 单击 Tutorial.rptproj,再单击“打开”。
5. 在解决方案资源管理器窗口中,双击 Sales Orders.rdl 可打开此报表。如有必要,单击“布局”选项卡,以在“布局”视图中打开此报表。
注意: |
如果“解决方案资源管理器”窗口不可见,请单击“视图”菜单中的“解决方案资源管理器”。 |
第 2 课:添加组
您可以将组添加到按销售人员对数据进行分组和排序的表。通过添加组,可以将销售信息组织到数据的逻辑单元中,以便显示每个销售人员的销售数据。可以将组添加到表、矩阵以及列表中。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl023c7b660,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl02img,"; </script> 将组添加到表格报表
1. 在“布局”窗格中单击表,使列句柄和行句柄显示在表的上方和旁边。有关表的各部分的详细信息,请参阅使用表数据区域。
注意: |
句柄是显示在表的上方和旁边的灰框。您可以使用句柄对列、行和表本身执行各种操作。穿过表顶部上下拉伸的句柄是列句柄。沿着表一侧拉伸的句柄是行句柄。列句柄和行句柄的交汇处是角部句柄。 |
2. 右键单击任一行的句柄,再单击“插入组”。
3. 在“常规”选项卡上,对于“分组方式”,选择第一行的 =Fields!LastName.Value 和第二行的 =Fields!FirstName.Value”。此操作将按销售人员的姓名对数据进行分组。
4. 在“排序”选项卡上,对于“排序方式”,选择第一行的 =Fields!LastName.Value 和第二行的 =Fields!FirstName.Value”,其中每一个选项都按“升序”排序。此操作将按销售人员的姓名对分组进行排序。
5. 单击“确定”。组头和组尾这两个新行将添加到此表中。
第 3 课:添加新建列
您可以在表中添加一列,以显示销售人员的姓名。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl02d2544a6,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl02img,"; </script> 向报表的表数据区域添加列
1. 单击表,以便在此表的上方和旁边显示列句柄和行句柄。
2. 在第一列 (Order Date) 上,右键单击句柄,再单击“在左侧插入列”。
3. 单击新列中的第二个单元,然后键入以下表达式。第二个单元应该位于在前面的步骤中添加的新组的行中:
复制代码
=Fields!FirstName.Value & " " & Fields!LastName.Value
4. 单击第一列中的第一个单元,然后键入 Sales Person。这是表格表头中列的标签。
第 4 课:对详细信息数据排序
可以对表中的详细信息数据排序,从而对每个组中的数据排序。排序顺序用于按订单日期列出各个销售人员的各项销售数据。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl0271218ce,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl02img,"; </script> 对报告中的详细信息数据排序
1. 在“布局”窗格中单击表,使列句柄和行句柄显示在表的上方和旁边。
2. 右键单击角部句柄,再单击“属性”按钮。
注意: |
角部句柄是指列句柄和行句柄交汇处的句柄。 |
3. 在“排序”选项卡的“排序方式”中,选择 =Fields!OrderDate.Value。此时将按订单日期对详细信息数据排序。
4. 单击“确定”。
第 5 课:添加小计
您可以向报表添加聚合函数。以下步骤将添加按销售人员统计的小计。
· 单击最后一列(应付款总计)中的第四个单元格,然后键入以下表达式:
复制代码
=Sum(Fields!TotalDue.Value)
第 6 课:应用格式和样式
您可以执行其他任务来整理报表,使其更便于阅读。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl0285d7fee,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl02img,"; </script> 日期格式
默认情况下,OrderDate 字段显示日期和时间信息。您可以添加格式设置,以便只显示日期。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl03724ec56,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl03img,"; </script> 设置日期字段格式
1. 右键单击带 OrderDate 字段表达式的单元格,再单击“属性”。“文本框属性”对话框随即显示。
2. 打开“格式”选项卡,单击浏览按钮(以省略号按钮标签表示),以便打开“选择格式”对话框。
3. 对于“格式”,请依次选择“标准”、“日期”,然后选择列表中的第三个示例(短日期)。
4. 单击“确定”,关闭“选择格式”对话框,然后再次单击“确定”,关闭“文本框属性”对话框。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl04c10374d,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl04img,"; </script> 货币格式
TotalDue 字段显示常规数字。添加格式设置以便用货币格式显示数字。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl058bd8684,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl05img,"; </script> 设置货币字段格式
1. 右键单击带 TotalDue 字段表达式的单元格,然后单击“属性”。
2. 打开“格式”选项卡,单击浏览按钮(以省略号按钮标签表示),以便打开“选择格式”对话框。
3. 对于“格式”,请依次选择“标准”、“货币”,单击“确定”,然后再次单击“确定”,关闭“文本框属性”对话框。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl0646edde3,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl06img,"; </script> 文本样式和列宽
您还可以向表格表头添加样式,以将它们与报表中的数据行区分开来,并调整列的宽度。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl0750cb7ea,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl07img,"; </script> 设置表格表头格式
2. 选择第一行、第二行和第四行(包含列标题标签的行、组头行和组尾行)的行句柄,然后在格式设置工具栏上,单击“粗体”(“B”) 按钮。
注意: |
若要选择多个项,请按住 Ctrl 键,同时单击各个项。 |
3. 指向列句柄之间的行,使游标变为双箭头。拖动列,调整到所需大小。
第 7 课:发布已更新的报表
使用“预览”可在报表发布到报表服务器之前对其进行检查。预览报表之后,您可以在“布局”视图中进一步修改或者将其发布到报表服务器。在发布报表之前,您必须切换到“生产”配置并设置报表服务器的位置。
· 单击“预览”选项卡。
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl026c1fca4,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl02img,"; </script> 发布报表
1. 在解决方案资源管理器窗口中,右键单击“教程”项目,再单击“属性”。
注意: |
如果“解决方案资源管理器”窗口不可见,请在“视图”菜单上,单击“解决方案资源管理器”。 |
2. 单击配置管理器。
3. 在配置管理器对话框的“活动的解决方案配置”中,选择“生产”。
4. 单击“关闭”。
下图显示了“配置管理器”对话框。单击“关闭”后,您将返回到项目“属性页”对话框。
5. 在“教程属性页”对话框的 TargetServerURL 中,键入报表服务器的虚拟目录;例如 http://servername/reportserver。(这是报表服务器的虚拟目录,而不是报表管理器的虚拟目录。)
注意: |
如果报表服务器与报表设计器在同一计算机上,您可以使用 localhost 作为服务器名,例如 http://localhost/reportserver 或 http://localhost/reportserver$SQLEXPRESS。有关报表服务器名称的详细信息,请参阅配置报表服务器虚拟目录。 |
6. 如果“调试”属性节点尚未打开,请将其展开以显示 StartItem 属性。单击 StartItem 旁边的文本框,并从下拉列表中选择报表 SalesOrder.rdl。
7. 单击“确定”。
8. 保存报表项目。在“文件”菜单上,单击“全部保存”。
9. 发布报表。在“调试”菜单上,单击“开始执行(不调试)”。
10. 发布完成后,报表设计器将打开 Internet Explorer。单击“销售订单”即可查看该报表。