SQL2008_Report_Services基础教程
提示: 安装有 AdventureWorks2008 数据库的 Microsoft SQL Server 2008。必须先下载并安装 SQL Server 2008 示例和示例数据库,才能对其进行查看或使用。
实验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=AdventureWorks2008
6.该连接字符串假定 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],
https://www.wendangku.net/doc/eb14229739.html, AS Subcat, https://www.wendangku.net/doc/eb14229739.html, 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 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.ProductCategoryID
GROUP BY https://www.wendangku.net/doc/eb14229739.html,, soh.OrderDate, soh.SalesOrderNumber, https://www.wendangku.net/doc/eb14229739.html,, https://www.wendangku.net/doc/eb14229739.html,,
soh.SalesPersonID
HAVING https://www.wendangku.net/doc/eb14229739.html, = '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.在 Sum[Qty] 左侧的空单元中,键入标签“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],
https://www.wendangku.net/doc/eb14229739.html, AS Subcat, https://www.wendangku.net/doc/eb14229739.html, 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 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.ProductCategoryID
GROUP BY https://www.wendangku.net/doc/eb14229739.html,, soh.OrderDate, soh.SalesOrderNumber,
https://www.wendangku.net/doc/eb14229739.html,, https://www.wendangku.net/doc/eb14229739.html,, soh.SalesPersonID
HAVING (https://www.wendangku.net/doc/eb14229739.html, = '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],
https://www.wendangku.net/doc/eb14229739.html, AS Subcat, https://www.wendangku.net/doc/eb14229739.html, 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 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.ProductCategoryID
GROUP BY https://www.wendangku.net/doc/eb14229739.html,, soh.OrderDate, soh.SalesOrderNumber,
https://www.wendangku.net/doc/eb14229739.html,, https://www.wendangku.net/doc/eb14229739.html,, soh.SalesPersonID
HAVING (https://www.wendangku.net/doc/eb14229739.html, = '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],
https://www.wendangku.net/doc/eb14229739.html, AS Subcat, https://www.wendangku.net/doc/eb14229739.html, 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 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.ProductCategoryID
GROUP BY https://www.wendangku.net/doc/eb14229739.html,, soh.OrderDate, soh.SalesOrderNumber,
https://www.wendangku.net/doc/eb14229739.html,, https://www.wendangku.net/doc/eb14229739.html,, soh.SalesPersonID
HAVING
https://www.wendangku.net/doc/eb14229739.html, = 'Clothing'
AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate))
AND soh.SalesPersonID = (@BusinessPersonID)
6.除添加了将结果集限定为一个销售人员的条件之外,该查询与以前的查询
相同:
7.AND soh.SalesPersonID = (@BusinessPersonID)
8.单击“运行”(!) 按钮。提示输入查询参数的值时,请使用下表来输入值。
9.单击“确定”。随即显示SalesPersonID = 290 的销售人员 Ranjit
Varkey Chudukatil 的结果集。
填充报表参数的有效值列表
1.在“报表数据”窗格中,单击“新建”,然后单击“数据集”。此时将打
开“数据集属性”对话框。
2.在“名称”字段中,键入BusinessPersons。该数据集将用于填充
SalesPersonID报表参数的有效值列表。
3.确保数据源为 AdventureWorks_Ref。
4.将以下 Transact-SQL 查询粘贴到查询窗格中:
SELECT SP.BusinessEntityID, C.FirstName, https://www.wendangku.net/doc/eb14229739.html,stName
FROM 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.BusinessEntityID ORDER BY SP.BusinessEntityID
5.单击两次“确定”。随即填充 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],
https://www.wendangku.net/doc/eb14229739.html, AS Subcat, https://www.wendangku.net/doc/eb14229739.html, 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 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.ProductCategoryID
GROUP BY https://www.wendangku.net/doc/eb14229739.html,, soh.OrderDate, soh.SalesOrderNumber,
https://www.wendangku.net/doc/eb14229739.html,, https://www.wendangku.net/doc/eb14229739.html,, soh.SalesPersonID
HAVING
https://www.wendangku.net/doc/eb14229739.html, = 'Clothing'
AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate))
AND soh.SalesPersonID IN (@BusinessPersonID)
6.单击“运行”(!) 按钮。提示输入查询参数的值时,请使用下表来输入值。
查询设计器不支持测试多值参数。