SSRS 中的多参数

SSRS 中的多参数允许用户动态地使用多个参数值来筛选 SSRS 报表。这类似于 Flipkart 和 Amazon 等电子商务网站中选择品牌、尺寸和价格范围。

本文将通过一个示例,向您展示如何在 SSRS 或 SQL Server Reporting Services 中添加多个参数。

我们使用下面显示的报表来解释 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 中添加多参数

在开始创建国家参数之前。让我们在“报表数据”选项卡中创建一个数据集。首先,我们创建了一个嵌入式数据集,其中包含 [AdventureWorksDW2014] 数据库中 [DimGeography] 表的唯一国家名称。

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

SELECT [EnglishCountryRegionName] AS [Country]

FROM [DimGeography]

要添加 SSRS 中的多参数,请右键单击“报表数据”选项卡中存在的“参数”文件夹,这将打开上下文菜单以选择“添加参数…”选项。

Report Parameters 4

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

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

Allow Multiple Parameter Values option 0

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

在此 SSRS 多参数示例中,我们希望使用我们之前创建的 CountryName 数据集。因此,选择“从查询获取值”选项并从列表中选择数据集。

Drop Down List 2

请指定值字段和标签字段。在这里,我们只有一列,所以两者都将是国家。

  • 值字段:此值将发送到查询。报表将使用此值进行筛选。
  • 标签字段:此值将显示给最终用户。
Drop Down List 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]
DataSet 1

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

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

Allow Multiple Values 2

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

Multiple parameters Value And Label Fields 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
DataSet Query 4

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

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

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

Multiple parameters 6

我们已成功为国家名称、州名称和城市创建了三个数据集和三个参数。

现在,我们必须应用数据集的筛选条件。请参阅数据集级别筛选文章以了解筛选的创建。

从“报表数据”选项卡中选择数据集,然后右键单击它将打开上下文菜单。请从中选择“数据集属性…”选项。

DataSet Properties 6

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

Filters using Multiple parameters 7

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

单击“确定”以完成数据集级别筛选的配置。让我们单击“预览”选项卡以预览数据。

Multiple parameters Preview 8

从上面的屏幕截图可以看出,它显示了一个空白报表,允许我们从我们创建的数据集中选择国家名称、州和城市中的多个值。

Multiple parameters 9

要显示记录,我们必须从列表中选择国家名称(们)、州名称(们)和城市名称(们),然后按 Enter。

此时,我们选择了澳大利亚国家、新南威尔士州以及 Coffs Harbour 和 Darlinghurst 城市。

SSRS Multiple parameters 10

在此 SSRS 多参数示例中,如果您知道每个国家/地区的所有州和城市名称,您将不会遇到任何问题。如果您不记得它们怎么办?为了解决这些情况,我们必须使用级联参数来筛选数据。