Reporting services 基于先前参数的SSRS参数

Reporting services 基于先前参数的SSRS参数,reporting-services,filter,parameters,Reporting Services,Filter,Parameters,在我的报告中,我有一个参数,允许用户选择一个或多个选项 Driver 1, Driver 2, Driver 3 我有另一个参数,它只有在他们从上一个参数中选择Driver 3时才有效 AAA, BBB, CCC 因此,用户可能会选择驱动程序1和驱动程序3,然后选择BBB。如何让报告提供驱动程序1的所有数据,而仅提供驱动程序3的BBB?是来自数据库的参数值列表?如果是这样,您可以使用第一个参数的结果来过滤第二个参数的查询。 例如如果我们想从地理区域列表中进行选择,然后从这些区域中存在的国家列

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

Driver 1,
Driver 2,
Driver 3
我有另一个参数,它只有在他们从上一个参数中选择Driver 3时才有效

AAA,
BBB,
CCC

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

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

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

SELECT RegionID, RegionName From dbo.Regions
创建一个新参数@regions并将其设置为多值,并将可用值设置为来自数据集。选择dsRegions并使用ID列作为值,使用name列作为标签

创建另一个数据集,例如dsCountries,但这次查询将类似于这样

SELECT CountryID, CountryName FROM dbo.Countries WHERE RegionID IN (@regions)
注意:必须在(@regions)中使用,而不是=@regions,否则当选择多个区域时,查询将失败。

创建一个新参数@countries,将其设置为前面的参数,但这次将其指向dsCountries

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

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


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

您是如何加载值的?如果使用multi-pick,最好将参数连接到一个逗号分隔的字符串中,然后在加载sql的第二个参数中拆分它。