




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL Server 2008 Reporting Services 动手实验备注: 安装有 AdventureWorks2008 数据库的 Microsoft SQL Server 2008。必须先下载并安装 SQL Server 2008 示例和示例数据库,才能对其进行查看或使用。若要安装 SQL Server 的正式示例数据库,请访问 http:/www.CodeP/MSFTDBProdSample动手实验1:创建基本表报表 按照本动手实验中的步骤来学习如何创建第一个报表。本动手实验将向您演示如何使用报表设计器来创建数据源连接,定义简单查询并生成包含数据的布局。动手实验2:向报表添加参数 按照本动手实验中的步骤来学习添加控制报表外观和内容的参数。动手实验3:创建基本矩阵报表 按照本动手实验中的步骤学习如何创建包含矩阵的报表。动手实验4:向报表添加饼图 按照本动手实验中的步骤学习如何向报表添加饼图。动手实验5:向报表添加条形图 按照本动手实验中的步骤学习如何向报表添加条形图。动手实验6:向报表添加 KPI 按照本动手实验中的步骤学习如何向报表添加关键绩效指标 (KPI)。这包括图像或仪表数据区域。 动手实验7: 使用report builder2.0创建报表动手实验8(可选) : 使用VC#应用程序访问报表服务器 动手实验1:创建基本表报表 (共六个课练习)第 1 课:创建报表服务器项目 (Reporting Services) 第 2 课:指定连接信息 (Reporting Services) 第 3 课:为表报表定义数据集 (Reporting Services) 第 4 课:向报表添加表 (Reporting Services) 第 5 课:设置报表格式 (Reporting Services) 第 6 课:添加分组和总计 (Reporting Services)第 1 课:创建报表服务器项目 (Reporting Services) 创建报表服务器项目1. 单击“开始”,依次指向“程序”和 Microsoft SQL Server 2008,然后单击 Business Intelligence Development Studio。2. 在“文件”菜单上,指向“新建”,再单击“项目”。3. 在“项目类型”列表中,单击“商业智能项目”。4. 在“模板”列表中,单击“报表服务器项目”。5. 在“名称”中,键入 Tutorial。6. 单击“确定”以创建项目。解决方案资源管理器中将显示 Tutorial 项目。创建新的报表定义文件1. 在解决方案资源管理器中,右键单击“报表”,指向“添加”,再单击“新建项”。注意:如果“解决方案资源管理器”窗口不可见,请单击“视图”菜单中的“解决方案资源管理器”。 2. 在“添加新项”对话框的“模板”下,单击“报表”。3. 在“名称”中,键入 Sales Orders.rdl,再单击“添加”。此时报表设计器将打开,并在“设计”视图中显示新的 .rdl 文件。您已经成功创建了名为“Tutorial”的报表项目,并向该报表项目添加了报表定义 (.rdl) 文件。接下来,您将指定要用于报表的数据源。第 2 课:指定连接信息 (Reporting Services) 设置连接1. 在“报表数据”窗格中,单击“新建”,然后单击“数据源”。注意:如果“报表数据”窗格不可见,请单击“视图”菜单上的“报表数据”。 2. 在“名称”中,键入 AdventureWorks。3. 确保已选中“嵌入连接”。4. 在“类型”中,选择 Microsoft SQL Server。5. 在“连接字符串”中,键入以下内容:Data source=localhost; initial catalog=AdventureWorks20086. 该连接字符串假定 Business Intelligence Development Studio、报表服务器和 AdventureWorks2008 数据库都已安装在本地计算机中,并且您拥有登录 AdventureWorks2008 数据库的权限。7. 单击“确定”。名为 AdventureWorks 的数据源即被添加到“报表数据”窗格中。您已成功定义了到 AdventureWorks 示例数据库的连接第 3 课:为表报表定义数据集 (Reporting Services) 定义数据源后,您需要定义数据集。在 Reporting Services 中,您在报表中使用的数据包含在“数据集”中。您将创建一个查询,用于从 AdventureWorks2008 数据库中检索销售订单信息。为报表数据定义 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 LineTotalFROM Sales.SalesPerson sp INNER JOIN Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp 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.ProductCategoryIDGROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonIDHAVING ppc.Name = Clothing 5. (可选)单击“查询设计器”按钮。查询将在基于文本的查询设计器中显示。通过单击“编辑为文本”,可以切换到图形查询设计器。通过单击查询设计器工具栏上的“运行”(!)按钮来查看查询结果集。单击“确定”退出查询设计器。6. 单击“确定”退出“数据集属性”对话框。此时将在“报表数据”窗格中显示 AdventureWorksDataset 数据集字段。第 4 课:向报表添加表 (Reporting Services)。向报表布局中添加表数据区域和字段1. 在“工具箱”中,单击“表”,再单击设计图面。报表设计器将在设计图面中心绘制一个具有三列的数据区域。注意:“工具箱”可能显示为“报表数据”窗格左侧的一个选项卡。若要打开“工具箱”,请将指针移到“工具箱”选项卡上。如果“工具箱”不可见,请单击“视图”菜单上的“工具箱”。 2. 在“报表数据”窗格中,展开 AdventureWorksDataset 数据集以显示字段。3. 将 Date 字段从“报表数据”窗格拖到表的第一列中。4. 将 Order 字段从“报表数据”窗格拖到表的第二列中。5. 将 Product 字段从“报表数据”窗格拖到表的第三列中。6. 将 Qty 字段拖到第三列的右边缘,直到显示一个垂直光标且鼠标指针带有加号 + 为止。释放鼠标按钮后,将为 Qty 创建第四列。7. 请以相同方式添加 LineTotal 字段,并创建第五列。以下关系图显示已由下列字段填充的表数据区域:Date、Order、Product、Qty 和 Line Total。预览报表 单击“预览”选项卡。报表设计器将运行此报表,并将其显示在“预览”视图中。下图显示了“预览”视图中的部分报表。请注意,Line Total 列中货币的小数点后面有六个小数位,并且日期具有不必要的时间戳。此格式问题将在下一课中进行修复。注意:您可以在预览报表前后保存报表项目。在“文件”菜单上,单击“全部保存”。 第 5 课:设置报表格式 (Reporting Services) 将设置列标题以及日期和货币值的格式。设置日期格式默认情况下,Date 字段显示日期和时间信息。您可以设置其格式,使其只显示日期。设置日期字段格式1. 单击“设计”选项卡。2. 右键单击带 Date 字段表达式的单元,然后单击“文本框属性”。3. 单击“数字”,然后在“类别”字段中,选择“日期”。4. 在“类型”框中,选择“2000 -01 -31 ”。5. 单击“确定”。 设置货币格式LineTotal 字段显示常规数字。请设置其格式,以使其显示货币形式的数字。设置货币字段格式1. 右键单击带有 LineTotal 字段表达式的单元,然后单击“文本框属性”。2. 单击“数字”,然后在“类别”字段中,选择“货币”。3. 如果区域设置为“英语(美国)”,则默认设置应为: 小数位数:2 负数:($12345.00) 符号:$ 英语(美国) 4. 选择“使用 1000 分隔符(,)”。如果示例文本为 $12,345.00,则说明您的设置是正确的。5. 单击“确定”。 更改文本样式和列宽还可以更改标题行的格式设置,以使其与报表中的数据行区分开来。最后,您将调整列的宽度。设置标题行和表列的格式1. 单击表,以便在此表的上方和旁边显示列控点和行控点。沿此表的上方和一侧显示的灰色条状物就是列控点和行控点。2. 指向列控点之间的行,使光标变为双箭头。拖动列,调整到所需大小。3. 选择包含列标题标签的行,从“格式”菜单中,指向“字体”,然后单击“加粗”。4. 若要预览报表,请单击“预览”选项卡。其外观应与下图相似:第 6 课:添加分组和总计 (Reporting Services)向报表中添加分组和总计以便组织和汇总数据。在报表中对数据进行分组1. 单击“设计”选项卡。2. 从“报表数据”窗格将 Date 字段拖到“行组”窗格,并将其放置到名为 Details 的行上面。请注意,行控点中现在有一个方括号,用于显示组。表现在在垂直点线的两侧各有一个 Date 列。3. 从“报表数据”窗格将 Order 字段拖到“行组”窗格,并将其放置到 Date 下面和 Details 上面。请注意,行控点中现在有两个方括号,用于显示两个组。表现在还包含两个 Order 列。4. 删除两根线条右侧的原始 Date 和 Order 列。这将删除该单个记录值,以便仅显示组值。选择并右键单击两个列的列控点,然后单击“删除列”。您可以重新设置列标题和日期的格式。5. 切换到“预览”选项卡以预览报表。其外观应与下图类似:向报表中添加总计1. 切换到“设计”视图。2. 右键单击包含 LineTotal 字段的数据区域单元,并单击“添加总计”。这将添加一个带有每个订单的美元总金额的行。3. 右键单击包含 Qty 字段的单元,并单击“添加总计”。这将向总计行添加每个订单的总数量。4. 在 SumQty 左侧的空单元中,键入标签“Order Total”。5. 可以向总计行添加背景色。选择两个累加求和单元和标签单元。6. 在“格式”菜单上,单击“背景色”,并单击“浅灰色”。向报表添加每日总计1. 右键单击 Order 单元,指向“添加总计”,并单击“晚于”。这将添加一个包含每天的总量和美元总金额的新行,并在 Order 列中添加“Total”标签。2. 在相同单元中,在 Total 单词之前键入 Daily 单词,使其显示为 Daily Total。3. 选定 Daily Total 单元、两个 Sum 单元及其之间的空单元。4. 在“格式”菜单上,单击“背景色”,并单击“橙色”。向报表添加总计1. 右键单击 Date 单元,指向“添加总计”,并单击“晚于”。这将添加一个包含整个报表的总量和美元总金额的新行,并在 Date 列中添加 Total 标签。2. 在相同单元中,在 Total 单词之前键入 Grand 单词,使其显示为 Grand Total。3. 选定 Grand Total 单元、两个 Sum 单元及其之间的空单元。4. 在“格式”菜单上,单击“背景色”,并单击“浅蓝色”。5. 单击“预览”。最后一页的外观应与下图相似:这样,您就成功完成了对“创建基本表报表”动手实验的学习。可以使用该基本表报表作为其他动手实验的基础。动手实验2: 向报表添加参数第 1 课:添加按日期筛选报表的参数 本动手实验要求您已完成动手实验:创建基本表报表。打开现有报表服务器项目1. 单击“开始”,依次指向“所有程序”和 Microsoft SQL Server 2008,单击 Business Intelligence Development Studio。2. 在“文件”菜单上,指向“打开”,再单击“项目/解决方案”。3. 导航到 Tutorial.sln。本动手实验是在动手实验:创建基本表报表 中创建的。4. 单击“确定”打开项目。“动手实验”项目即在解决方案资源管理器中显示,并带有一个名为 Sales Orders.rdl 的报表。注意 如果解决方案资源管理器不可见,请单击“视图”菜单中的“解决方案资源管理器”。将嵌入数据源转换为共享数据源1. 在“报表数据”窗格中,右键单击数据源 AdventureWorks 并选择“转换为共享数据源”。名为 AdventureWorks.rds 的数据源即被添加到“解决方案资源管理器”中。2. 在“报表数据”窗格中,右键单击 AdventureWorks 数据源,并选择“数据源属性”。3. 在“名称”中,键入 AdventureWorks_Ref。4. 单击“确定”。 替换现有数据集1. 在“报表数据”窗格中,右键单击数据集 AdventureWorksDataset,然后单击“数据集属性”。2. 在“数据源”中,确保已选中 AdventureWorks_Ref。3. 在“查询类型”中,确保已选中“文本”。4. 单击“查询设计器”按钮打开查询设计器。5. 用下列查询替换文本框中的文本。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 LineTotalFROM Sales.SalesPerson sp INNER JOIN Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp 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.ProductCategoryIDGROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonIDHAVING (ppc.Name = Clothing AND (soh.OrderDate BETWEEN (StartDate) AND (EndDate)6. 单击工具栏上的“运行”(!)。此时将打开“定义查询参数”对话框,提示您输入参数值。7. 提供以下两个值以查看筛选的结果集:a. 在“参数值”列中,为 StartDate 输入值,例如 2001-01-01。b. 在“参数值”列中,为 EndDate 输入值,例如 2003-01-01。8. 单击“确定”。 9. 结果集显示 2001 至 2002 年期间筛选后的订单数据集。10. 单击两次“确定”。“报表数据”窗格即用数据集字段进行填充。另请注意将自动创建 StartDate 和 EndDate 两个报表参数,并显示在“参数”节点下面。更改报表参数的数据类型和默认值1. 在“报表数据”窗格中,展开“参数”,并双击 StartDate。此时将打开“报表参数属性”对话框。2. 确保参数名称为 StartDate,并且提示为“开始日期”。3. 在“数据类型”中,选择“日期/时间”。4. 单击“确定”。 5. 在“报表数据”窗格中,双击 EndDate。验证名称和提示值。6. 在“数据类型”中,选择“日期/时间”。7. 单击“确定”。 8. 单击“预览”。StartDate 和 EndDate 参数将分别随附一个日历控件显示在报表工具栏中。参数的数据类型是 Date/Time 并且未定义可用值列表时,将自动显示日历控件。如果定义了可用值列表,则改为显示一个值下拉列表。9. 提供以下两个参数值以运行报表:a. 在 StartDate 参数文本框中,输入日期 2001-01-01。b. 在 EndDate 参数文本框中,输入日期 2003-01-01。10. 单击“查看报表”。报表将仅显示位于报表参数值范围中的数据。为报表创建报表参数后,可以为这些参数添加默认值。默认参数可以使报表自动运行;否则,用户必须输入参数值,报表才能运行。为参数设置默认值1. 在“设计”视图的“报表数据”窗格中,展开“参数”,并双击 StartDate。此时将打开“报表参数属性”对话框。2. 单击“默认值”。3. 选择“指定值”选项。此时将显示“添加”按钮和空的“值”网格。4. 单击“添加”。空行即被添加到网格中。5. 单击“值”文本框,并删除默认文本 (Null)。6. 键入 2001-01-01。单击“确定”。 7. 在“报表设计”窗格中,双击 EndDate。8. 单击“默认值”。9. 选择“指定值”选项。10. 单击“添加”。11. 键入 2003-01-01。单击“确定”。12. 单击“预览”。由于为所有参数定义了默认值,因此报表会立即运行。将新字段添加至查询以用于筛选1. 切换到“设计”视图。2. 右键单击数据集 AdventureWorksDataset,并选择“数据集属性”。打开查询设计器,并用以下新查询替换查询:SELECT soh.OrderDate AS Date, DATENAME(weekday, soh.OrderDate) as Weekday, soh.SalesOrderNumber AS Order, pps.Name AS Subcat, pp.Name as Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotalFROM Sales.SalesPerson sp INNER JOIN Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp 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.ProductCategoryIDGROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonIDHAVING (ppc.Name = Clothing AND (soh.OrderDate BETWEEN (StartDate) AND (EndDate)3. 单击“运行”(!)。“定义查询参数”对话框随即打开。4. 在“参数值”列中,为 StartDate 输入值,例如 20010101。5. 在“参数值”列中,为 EndDate 输入值,例如 20030101。6. 单击“确定”。结果集中应该显示一个标有 Weekday 的新列。7. 单击两次“确定”。在“报表数据”窗格中,确保含有 Weekday 字段。(可选)设置要筛选的表数据中的日期的格式1. 单击“设计”选项卡。2. 右键单击带 Date 字段表达式的单元,然后单击“文本框属性”。3. 单击“数字”,然后在“类别”字段中,选择“日期”。4. 在“类型”框中,选择“2000 年 1 月 31 日,星期一”。5. 单击“确定”。添加新报表参数1. 在“设计”视图中,单击“报表数据”窗格中的“新建”,然后单击“参数”。此时将打开“报表参数属性”对话框。2. 在“名称”中,键入 DayoftheWeek。3. 在“提示”中,键入“筛选每周工作日:”。4. 确保该数据类型是 Text。5. 单击“默认值”。6. 选择“指定值”选项。此时将显示“添加”按钮和空的“值”网格。7. 单击“添加”。8. 键入 “星期五”。9. 单击“确定”。 使用参数表达式设置表筛选器1. 在“设计”视图中,右键单击表的行控点或列控点,并选择“Tablix 属性”。2. 单击“筛选器”。此时将显示空筛选器网格。3. 单击“添加”。空行即被添加到网格中。4. 在“表达式”的下拉列表中,选择 Weekday。5. 确保“运算符”显示为等号 (=)。6. 单击“值”文本框旁边的表达式 (fx) 按钮。此时将打开“表达式”对话框。7. 在“类别”中,单击“参数”。当前参数列表将显示在“值”窗格中。双击 DayoftheWeek。该参数表达式便会添加至表达式文本框中。现在表达式文本框中将显示以下表达式:=Parameters!DayoftheWeek.Value。8. 单击“确定”。再次单击“确定”,退出“Tablix 属性”对话框。单击“预览”。由于所有参数都有默认值,因此报表会自动运行。第 2 课:添加创建可用值列表的参数。可用值(即有效值)为用户提供一系列可能的报表参数值。报表作者可以提供专门用于从数据源中检索一组值的查询中的有效值,也可以提供一组预定义的值。通过将一组可用值绑定到处理报表时运行的数据集查询,可以确保只能从下拉列表中选择数据库中存在的值。替换现有数据集1. 在“报表数据”窗格中,右键单击数据集 AdventureWorksDataset,然后单击“数据集属性”。注意:如果未显示“报表数据”窗格,请单击“视图”菜单上的“报表数据”。 2. 在“数据源”中,确保已选中 AdventureWorks_Ref。3. 在“查询类型”中,确保已选中“文本”。4. 单击“查询设计器”按钮打开查询设计器。5. 用下列查询替换文本框中的文本:SELECT soh.OrderDate AS Date, DATENAME(weekday, soh.OrderDate) as Weekday, soh.SalesOrderNumber AS Order, pps.Name AS Subcat, pp.Name as Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotalFROM Sales.SalesPerson sp INNER JOIN Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp 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.ProductCategoryIDGROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonIDHAVING ppc.Name = Clothing AND (soh.OrderDate BETWEEN (StartDate) AND (EndDate)AND soh.SalesPersonID = (BusinessPersonID)6. 除添加了将结果集限定为一个销售人员的条件之外,该查询与以前的查询相同:7. AND soh.SalesPersonID = (BusinessPersonID) 8. 单击“运行”(!) 按钮。提示输入查询参数的值时,请使用下表来输入值。StartDate 20010101EndDate 20030101BusinessPersonID 2909. 单击“确定”。随即显示 SalesPersonID = 290 的销售人员 Ranjit Varkey Chudukatil 的结果集。填充报表参数的有效值列表1. 在“报表数据”窗格中,单击“新建”,然后单击“数据集”。此时将打开“数据集属性”对话框。2. 在“名称”字段中,键入 BusinessPersons。该数据集将用于填充 SalesPersonID 报表参数的有效值列表。3. 确保数据源为 AdventureWorks_Ref。4. 将以下 Transact-SQL 查询粘贴到查询窗格中:SELECT SP.BusinessEntityID, C.FirstName, C.LastNameFROM Sales.SalesPerson AS SP INNER JOIN HumanResources.Employee AS E ON E.BusinessEntityID = SP.BusinessEntityID INNER JOIN Person.Person AS C ON C.BusinessEntityID = E.BusinessEntityIDORDER BY SP.BusinessEntityID5. 单击两次“确定”。随即填充 BusinessPersons 数据集的字段列表。该数据集将用于提供 BusinessPersonID 参数的有效值。6. 您将发现 BusinessPersons 数据集具有名为 FirstName 和 LastName 的字段。接下来,我们将这两个字段连接为一个名为 Name 的字段。在“报表数据”窗格中定义计算字段1. 在“报表数据”窗格工具栏中,右键单击 BusinessPersons 数据集,再单击“添加计算字段”。随即将打开“数据集属性”对话框的“字段”页,并向网格添加一个新行。2. 在最后一个“字段名称”文本框中,键入 Name。3. 在“字段源”文本框中,粘贴以下表达式:=Fields!LastName.Value & , & Fields!FirstName.Value 4. 单击“确定”。 5. 在“报表数据”窗格的 BusinessPersons 数据集下,新字段 Name 将出现在该数据集的字段集合中。使用可用值列表填充报表参数1. 在“报表数据”窗格中,展开“参数”节点,右键单击 BusinessPersonID,然后单击“参数属性”。2. 在“提示”中,键入“选择业务人员:”。3. 在“数据类型”中,选择“整数”。4. 单击“可用值”。5. 选择“从查询中获取值”选项。6. 从“数据集”下拉列表中,选择 BusinessPersons。7. 从“值字段”下拉列表中,选择 BusinessEntityID。8. 从“标签字段”下拉列表中,选择“名称”。通过选择标签的名称,BusinessEntityID 参数的有效值下拉列表现在将显示每个销售人员的姓名,而不是销售人员编号。9. 单击“默认值”。10. 选择“从查询中获取值”选项。11. 从“数据集”下拉列表中,选择 BusinessPersons。12. 从“值字段”下拉列表中,选择 BusinessEntityID。13. 单击“确定”。 14. 单击“预览”选项卡。此报表将显示业务人员姓名下拉列表。15. 单击“查看报表”。选择其他参数值以查看结果。后续步骤第 3 课:添加在列表中选择多个值的参数。替换现有数据集1. 在“报表数据”窗格中,右键单击数据集 AdventureWorksDataset,然后单击“数据集属性”。2. 在“数据源”中,确保已选中 AdventureWorks_Ref。3. 在“查询类型”中,确保已选中“文本”。4. 单击“查询设计器”按钮打开查询设计器。5. 用下列查询替换文本框中的文本:SELECT soh.OrderDate AS Date, DATENAME(weekday, soh.OrderDate) as Weekday, soh.SalesOrderNumber AS Order, pps.Name AS Subcat, pp.Name as Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotalFROM Sales.SalesPerson sp INNER JOIN Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp 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.ProductCategoryIDGROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonIDHAVING ppc.Name = Clothing AND (soh.OrderDate BETWEEN (StartDate) AND (EndDate)AND soh.SalesPersonID IN (BusinessPersonID)6. 单击“运行”(!) 按钮。提示输入查询参数的值时,请使用下表来输入值。查询设计器不支持测试多值参数。StartDate 20010101EndDate 20030101BusinessPersonID 2907. 单击“确定”。 随即显示 BusinessPersonID = 290 的销售人员 Ranjit Varkey Chudukatil 的结果集。编辑 BusinessPersonID 报表参数以接受多个值(选项出现单选按钮)1. 在“报表数据”窗格中,展开“参数”,并双击 BusinessPersonID 参数。2. 选中“允许多个值”选项。3. 单击“确定”。 4. 单击“预览”。报表将自动运行。BusinessPersonID 的下拉列表显示所有销售人员姓名。注意:系统将(“全选”)值用作多值参数可用值下拉列表中的第一个值。使用该复选框可以选中或清除所有值。默认情况下,会选中所有值。 添加新数据集以填充报表参数的有效值1. 切换到“设计”视图。2. 在“报表数据”窗格中,右键单击 AdventureWorks_Ref,然后单击“添加数据集”。此时将打开“数据集属性”对话框。3. 在“名称”字段中,键入 WeekDaysfromQuery。4. 在“查询类型”中,验证是否已选中“文本”。5. 在“查询”中,键入或粘贴以下查询字符串:SET DATEFIRST 1;SELECT DISTINCT DATEPART(weekday, S.OrderDate) as WeekDayNumber, DATENAME(weekday, S.OrderDate) as Weekday FROM Sales.SalesOrderHeader SOrder by WeekDayNumber6. 单击查询设计器工具栏上的“运行”(!) 按钮。结果集将显示序号及每周的工作日。7. 单击两次“确定”退出“数据集属性”对话框。数据集 WeekDaysfromQuery 将显示在“报表数据”窗格中。编辑参数以接受多个值、默认值和有效值1. 在“报表数据”窗格中,展开“参数”,并双击 DayoftheWeek。此时将打开“报表参数属性”对话框。2. 选择“允许多个值”。3. 单击“可用值”。4. 选择“从查询中获取值”。5. 在“数据集”下拉列表中,选择 WeekDaysfromQuery。6. 在“值字段”下拉列表中,选择 Weekday。7. 在“标签字段”下拉列表中,选择 Weekday。8. 单击“默认值”。9. 选择“指定值”。10. (可选)选择现有值 Friday,并单击“删除”。11. 单击“添加”。12. 在“值”中,键入 Saturday。13. 单击“添加”。14. 在“值”中,键入 Sunday。15. 单击“确定”。 在预览该报表之前,需要更改为表数据区域定义的筛选表达式以使用 IN 运算符,这是因为 DayoftheWeek 参数接受多个值。更改筛选器以使用多值参数1. 在“设计”视图中,右键单击表,然后单击“Tablix 属性”。此时将打开“Tablix 属性”对话框。2. 单击“筛选器”。其中已包含一个在第 1 课中为 DaysoftheWeek 添加的筛选器。3. 在“表达式”的下拉列表中,确保值为 Weekday。4. 确保已选中“文本”。5. 将“运算符”由等号 (=) 更改为 In 运算符。6. 在“值”文本框的下拉列表中,确保值为 DayoftheWeek。7. 单击“确定”。 现在设置表的筛选器,使其使用 In 运算符比较字段 Weekday 的值和参数 DayoftheWeek 的值。为报表参数选择多个值时,筛选器将测试表的每一行,以查看 Weekday 字段是否存在于 DayoftheWeek 集合中。8. 单击“预览”。该报表会显示默认值为 Saturday 和 Sunday 的报表参数 DaysoftheWeek。使用下拉列表为 DayoftheWeek 参数选择多个值。第 4 课:添加级联参数。级联参数提供了一种管理大量报表数据的方法。使用级联参数,一个参数的值列表取决于前面参数选取的值。顺序对于级联参数来说很重要,因为对较晚出现在列表中的参数的数据集查询将包含对较早出现在列表中的参数的引用。向打开的报表服务器项目添加新报表1. 在解决方案资源管理器中,右键单击“报表”,指向“添加”,再单击“新建项”。2. 在“添加新项”对话框的“模板”下,单击“报表”。3. 在“名称”中,键入 CascadingParameters.rdl,再单击“添加”。此时报表设计器将打开,并在“设计”视图中显示新的 .rdl 文件。创建对共享数据源的引用1. 在“报表数据”窗格中,单击“新建”,然后单击“数据源”。2. 在“名称”中,键入 AdventureWorks_Ref。3. 选择“使用共享数据源引用”。4. 从下拉列表中选择 AdventureWorks。5. 单击“确定”。 使用查询和查询参数创建主数据集1. 在“报表数据”窗格中,右键单击数据源 AdventureWorks_Ref,然后单击“添加数据集”。2. 在“名称”中,键入 SalesbyCategory。3. 在“数据源”中,确保已选中 AdventureWorks_Ref。4. 在“查询类型”中,确保已选中“文本”。5. 在查询窗格下面,单击“查询设计器”。6. 粘贴以下查询:SELECT PC.Name AS Category, PSC.Name AS Subcategory, P.Name AS Product, SOH.OrderDate, SOH.SalesOrderNumber, SD.OrderQty, SD.LineTotal FROM Sales.SalesPerson SP INNER JOIN Sales.SalesOrderHeader SOH ON SP.BusinessEntityID = SOH.SalesPersonID INNER JOIN Sales.SalesOrderDetail SD ON SD.SalesOrderID = SOH.SalesOrderID INNER JOIN Production.Product P ON SD.ProductID = P.ProductID INNER JOIN Production.ProductSubcategory
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025安徽蚌埠市怀远县教育局所属事业单位紧缺专业人才引进(校园招聘)15人考前自测高频考点模拟试题完整答案详解
- 2025昆明学院招聘准聘制教师岗位工作人员考前自测高频考点模拟试题及答案详解(夺冠)
- 2025河南许昌市经发控股集团有限公司社会招聘拟聘人员考前自测高频考点模拟试题及答案详解(典优)
- 2025广东中山市黄圃镇水务事务中心招聘水闸、泵站管理员5人考前自测高频考点模拟试题带答案详解
- 2025湖南湘江爱乐乐团招聘考前自测高频考点模拟试题完整参考答案详解
- 2025江苏南京白下人力资源开发服务有限公司招聘劳务派遣人员2人(二十三)考前自测高频考点模拟试题附答案详解(模拟题)
- 2025年内江市东兴区公办学校公开选调教师(198人)考前自测高频考点模拟试题及答案详解一套
- 2025赤峰市委党校竞争性比选事业编制工作人员考前自测高频考点模拟试题及答案详解(名师系列)
- 2025年湖南师范大学附属小学第二轮非事业编制教师招聘模拟试卷及答案详解(考点梳理)
- 2025海南乐东县机关事务服务中心招聘保安人员2人考前自测高频考点模拟试题及完整答案详解1套
- 合肥市社会化工会工作者招聘考试真题2024
- 演讲与朗诵教学课件
- 《CSCO乳腺癌诊疗指南2025》更新要点解读
- 2025年教师师德师风考试题(附答案)
- 学堂在线 战场侦察监视技术与装备 章节测试答案
- 全球变暖与地缘冲突-洞察及研究
- 土壤隐患排查培训
- 垃圾分类可回收管理制度
- 甲状腺手术体位的综合征
- 2024年黑龙江省哈尔滨市中考数学试卷
- 医院检验科实验室生物安全程序文件SOP
评论
0/150
提交评论