【问题标题】:SSRS grey out parameter based on other parameter基于其他参数的 SSRS 灰显参数
【发布时间】:2017-12-19 16:57:15
【问题描述】:

我在 SSRS 中有一个参数,用户可以在其中选择是否终止提供程序。如果他们为已终止选择是,那么我希望他们能够选择终止日期范围。如果他们选择否,那么我希望日期范围显示为灰色。我在网站的其他地方找到了这个答案,但我无法让它工作。我对他们基于 SpecifyDate 数据集创建数据集的含义感到困惑。我试图通过创建一个 Terminated 数据集来复制它,但我认为我做的不正确。这是我发现的:possible solution

Terminated 参数是这样创建的:

主数据集有一个 where 过滤器:

    where status = @terminated

【问题讨论】:

  • 您尝试设置级联参数的内容。我敢打赌,您需要从将 Paramaters!Terminates.Value 作为数据集的 @Parameter 的 SP 的结果中提取低和高日期参数的“默认值”。这将绑定级联链接(在不需要时返回错误日期)。您可能还必须指定始终刷新以重置链。这是该主题的另一个链接。 --> social.msdn.microsoft.com/Forums/sqlserver/en-US/…
  • 另外,如果我没记错的话,参数列表中从上到下的参数顺序很重要。始终刷新高级选项将在链接值更改时重新获取相关参数的值,即@terminated。这将强制您的日期值根据空值或具有值从启用/禁用状态更改。
  • 我理解您所说的需要级联参数,但我正在努力让它发挥作用。

标签: sql-server reporting-services ssrs-2012


【解决方案1】:

您不能在 SSRS 中“灰显”参数。您可以做的就是将其设置为 NULL。 如果 Terminated 参数设置为“No”,您的查询需要能够处理 NULL 日期。

所以我要做的是,创建一个名为 Date 的数据集,它根据 Terminated 参数选择所需的日期..

日期数据集可能如下所示:(在实现时注释掉声明语句)--我正在为终止日期设置一个任意值

declare @teminated varchar(3) = 'Yes'
select
 case when @teminated = 'No' then getdate() else NULL end as start_date
, case when @teminated = 'No' then getdate() else NULL end as end_date

然后,您将从此数据集中生成的日期中设置终止日期的默认值。希望这是有道理的。

【讨论】:

  • 我尝试过这样的事情,但最终发生的是您必须在 SSRS 中设置参数以接受 NULL。当您这样做时,它会给出一个默认值,其中日期参数为空,并带有复选框供用户选中或取消选中。当用户想要运行 Terminated = "Y" 的报表时,这可以正常工作。但是,如果他们想在 Terminated = "N' 的地方运行它,他们将不得不手动取消选中 NULL 框,然后输入日期。听起来很简单,但有人告诉我这个选项对用户太不友好了。
  • @jackstraw22 SSRS 参数很难使用.. 从某种意义上说.. 你不能自定义它们.. 只有在 2016 年你可以移动参数的位置.. 能够隐藏他们有条件地会很棒..但我猜你在这里不走运
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-12
  • 1970-01-01
相关资源
最近更新 更多