如何在ssrs中启用级联参数

时间:2017-03-21 11:42:22

标签: reporting-services parameters ssrs-2008 ssrs-2012 cascadingdropdown

我的报告中有5个参数。 它们是@time_from@time_to@order_id@material@batch@sscc

我需要做以下事情:

  1. 选择时间范围
  2. 填充过滤器
    1. 所有订单
    2. 所有批次
    3. 所有SSCC
  3. 然后我必须显示所有数据。 (我做到第4个条件)

  4. 如果所有数据加载运营商都有从下拉列表中选择1个订单的选项,则应重新加载过滤器,并仅显示与该订单相关的sscc,批次和材料。

  5. 首先,在用户选择@time_from@time_to后,将启用其他参数。但第四个案例打破了前三个条件。 在第四个条件; @material@batch@sscc取决于order_id。 这就是我使用级联参数的原因。但是,如果我不选择order_id,则无法选择@material@batch@sscc,因为它们会被停用。

    选择@time_from@time_to参数后,我希望查看所有参数,并希望@material@batch@sscc依赖于order_id。

    例如;当我选择@time_from@time_to时,我必须选择@material 但是当我选择@time_from@time_to然后我选择@order_id@material@batch@sscc必须依赖于@order_id

    我想使用级联参数,但不能禁用参数。

    我附上了一些截图。我怎么能这样做?

    1-all parameter depends on time_from and time_to parameter

    2-after I choose @time_from and @time_to I want to show all parameter

1 个答案:

答案 0 :(得分:0)

如果您允许空值,则可以设置SQL查询来为您的参数提供支持。

select
    'All' as [Label],
    null as [Value]

union all

select 
    o.Name as [Label],
    o.ID as [Value]
from dbo.Orders as [o]

这假设您的订单包含名称和ID列。 然后,您可以使用它来为Orders参数的可用值列表提供支持。 然后,您可以使用..

过滤以后的查询
where (b.ID in (@Orders) or (@Orders) is null)

这将检查OrderID是否在列表中,或者订单列表是否为null(因此全部返回)。