基于先前参数

时间:2017-02-07 21:45:57

标签: reporting-services filter parameters

在我的报告中,我有一个参数,允许用户选择一个或多个选项。

Driver 1,
Driver 2,
Driver 3

我有另一个参数只有在他们从上一个参数中选择了Driver 3时才有效。

AAA,
BBB,
CCC

因此,用户可能会选择Driver 1和Driver 3,然后选择BBB。如何让报告提供驱动程序1的所有数据,而只提供驱动程序3的BBB?

1 个答案:

答案 0 :(得分:0)

参数值列表是否来自数据库?如果是这样,您可以使用第一个参数的结果来过滤第二个参数的查询。 例如。如果我们希望能够从地理区域列表中进行选择,然后从那里选择那些区域中存在的国家列表,我们可以做这样的事情。

创建一个名为say dsRegions的新数据集,并从数据库中获取区域列表

SELECT RegionID, RegionName From dbo.Regions

创建一个新参数@regions并将其设置为多值,并将可用值设置为来自数据集。选择dsRegions并使用ID列作为值和名称列作为标签。

创建另一个数据集说dsCountries但这次查询看起来像这样。

SELECT CountryID, CountryName FROM dbo.Countries WHERE RegionID IN (@regions)

注意:使用IN(@regions)而不是= @regions很重要,否则当选择多个区域时查询将失败。

创建一个新参数@countries,按照我们对前一个参数的设置进行设置,但这一次将其指向dsCountries

这样,只要用户选择一个或多个新区域,就会更新@regions参数,然后将重新查询和填充国家/地区列表。

最后,@ countries参数将传递给报告的主数据集。

假设您的第一个和第二个参数具有相似的关系,那么您应该能够轻松地调整这个通用示例。