SSRS 级联参数

在 SQL Server Reporting Services (SSRS) 中,级联参数意味着一个参数的值将根据其他参数进行筛选。在本文中,我们将向您展示如何配置 SSRS 级联参数示例。

我们将使用下面显示的报表来解释 SSRS 报表中的级联参数。请参考表格报表文章以了解 SSRS 表格报表。

如果您观察下面的屏幕截图,它是一个标准的表格报表,其中包含国家、州、城市、全名、职业、年收入和销售额等列。

Report Preview 0

下面的屏幕截图将向您展示我们用于此报表的数据源和数据集。

DataSet 1

我们在上面截图中使用的 SQL 命令是

SELECT Geo.[EnglishCountryRegionName] AS [Country]
      ,Geo.[StateProvinceName] AS [State]
      ,Geo.[City]
      ,Cust.FirstName +' '+ Cust.LastName AS [Full Name]  
      ,Cust.EnglishEducation AS Education 
      ,Cust.EnglishOccupation AS Occupation
      ,SUM(Cust.YearlyIncome) AS YearlyIncome
      ,SUM(Fact.SalesAmount)AS SalesAmount 
FROM  DimCustomer AS Cust
  INNER JOIN
      FactInternetSales AS Fact ON 
 Cust.CustomerKey = Fact.CustomerKey
 INNER JOIN
     [DimGeography] AS Geo ON
   Cust.GeographyKey = Geo.GeographyKey
 GROUP BY Geo.[EnglishCountryRegionName]
         ,Geo.[StateProvinceName] 
	 ,Geo.[City]
	 ,Cust.FirstName
         ,Cust.LastName  
         ,Cust.EnglishEducation 
         ,Cust.EnglishOccupation 
  ORDER BY [Country]

配置 SSRS 级联参数

为了解释 SSRS 中的级联参数,我们将创建三个报表参数:国家、州和城市。在最终报表中,如果您选择美国作为国家,则州参数应显示属于美国的所有州。接下来,如果您选择纽约作为州,则城市参数应使用级联参数显示纽约市。

首先,我们在 [AdventureWorksDW2014] 的 [DimGeography] 表中创建一个包含不同国家名称的嵌入式数据集。

DataSet Query for Table 1

我们在上面截图中使用的 SQL 命令是

SELECT [EnglishCountryRegionName] AS [Country]

FROM [DimGeography]

右键单击“报表数据”选项卡中的“参数”文件夹将打开上下文菜单,从中选择“添加参数...”选项。

Report Parameters 4

单击“添加参数...”选项后,将打开一个名为“报表参数属性”的新窗口来配置参数属性。请为 SSRS 级联报表参数提供有效的名称、提示文本和数据类型。

允许多选:如果您想允许用户选择多个值,请选中此选项。请参考多选参数文章以了解多选的用途。

Allow Multiple Parameter Values option 0

接下来,我们必须选择可用值。如果您可以手动指定值,可以选择“指定值”选项并手动输入值。

在此 SSRS 级联参数示例中,我们想使用我们之前创建的国家名称数据集。因此,选择“从查询获取值”选项,然后从列表中选择数据集。接下来,我们将 [Country] 指定为值字段和标签字段。

Drop Down List Parameters Label and Value Fields 3

单击“确定”以完成国家参数的配置。

接下来,我们在 [AdventureWorksDW2014] 的 [DimGeography] 表中创建另一个包含不同州名称的嵌入式数据集。下面截图中使用的 SQL 命令是

SELECT DISTINCT 
         A1.[EnglishCountryRegionName]
        ,A2.[StateProvinceName]
FROM [DimGeography] AS A1
    ,[DimGeography] AS A2
WHERE A1.[EnglishCountryRegionName] = A2.[EnglishCountryRegionName]
ORDER BY [StateProvinceName]
Multiple parameters DataSet 1

接下来,我们必须创建另一个参数来保存州信息。因此,右键单击“报表数据”选项卡中的“参数”文件夹,然后从上下文菜单中选择“添加参数...”选项。

请为报表参数提供有效的名称、提示文本和数据类型。如果您想允许用户选择多个值,请选中此“允许多选”选项。

Allow Multiple Values 2

在此 SSRS 级联参数示例中,我们想使用我们之前创建的 StateDS 数据集。因此,选择“从查询获取值”选项,然后从列表中选择数据集。接下来,我们将 [State Province Name] 指定为值字段和标签字段。

Multiple parameters 3

单击“确定”以完成州参数的配置。

接下来,我们在 [AdventureWorksDW2014] 的 [DimGeography] 表中创建另一个包含不同城市名称的嵌入式数据集。下面截图中使用的 SQL 命令是

SELECT DISTINCT 
         A1. [StateProvinceName]
        ,A2.City 
FROM [DimGeography] AS A1
    ,[DimGeography] AS A2
WHERE A1.StateProvinceName = A2.StateProvinceName
ORDER BY City
Multiple parameters DataSet Query 4

接下来,我们必须创建另一个参数来保存城市信息。因此,右键单击“报表数据”选项卡中的“参数”文件夹将打开上下文菜单,从中选择“添加参数...”选项。

请为报表参数提供有效的名称、提示文本和数据类型。选中此“允许多选”选项以允许用户选择多个值。

Multiple parameters 5

在此 SSRS 级联参数示例中,我们想使用我们之前创建的 CityDS 数据集。选择“从查询获取值”选项,然后从列表中选择数据集。接下来,我们将 [City] 列指定为值字段和标签字段。

Multiple parameters 6

我们已成功创建了三个数据集和三个参数,用于国家名称、州名称和城市。现在,我们必须对数据集应用筛选条件。请参考“在 SSRS 中设置数据集级别筛选”文章以了解筛选器的创建。

SSRS 级联参数示例

为了显示级联参数功能,我们必须应用筛选条件。因此,从“报表数据”选项卡中选择数据集,右键单击它将打开上下文菜单。请从中选择“数据集属性...”选项。

DataSet Properties 6

单击“添加参数...”选项后,将打开一个名为“报表参数属性”的新窗口来配置参数属性。

首先,选择先前创建的 StateDs 并添加下面的筛选器。此筛选器允许报表根据所选国家/地区筛选州(参数数据)。

Cascading Parameters 1

其次,选择先前创建的 CityDs 并添加下面的筛选器。此筛选器允许报表根据所选州筛选城市(参数数据)。

Cascading Parameters 2

在此 SSRS 级联参数示例中,我们将显示 [Country Name] 出现在 [Country Parameter]、[State Name] 出现在 [State Parameter] 和 [City Name] 出现在 [City Parameter] 中的记录。因此,我们为国家、州和城市创建了三个筛选器。

这里我们使用的是 IN 运算符。如果您在编写参数名称时遇到任何困难,请单击 fx 按钮并从 GUI 中选择参数名称。

Filters using Multiple parameters 7

单击“确定”以完成在数据集级别设置筛选器。让我们单击“预览”选项卡以预览基于级联参数的数据。

Cascading Parameters 3

从上图可以看出,它显示了一个空白报表,允许我们仅从国家名称中选择多个值。州和城市值的其余参数已禁用。一旦您选择了国家名称,州参数将启用选择,并显示与所选国家/地区对应的州。这就是 SSRS 中的级联参数。

这里我们选择联合王国作为国家名称,因此它显示了联合王国境内的州(根据数据集)。接下来,我们从联合王国选择了英格兰。

Cascading Parameters 4

在这里,我们选择了联合王国境内的伯明翰、利物浦和伦敦等城市。

Cascading Parameters 5

让我们通过在 SSRS 级联参数报表中按 Enter 键来预览数据。

SSRS Cascading Parameters 6

评论已关闭。