【问题标题】:Hide some charts and show other in one report在一份报告中隐藏一些图表并显示其他图表
【发布时间】:2012-04-11 22:14:53
【问题描述】:

我有一份包含 24 个图表的报告,一天中的每个小时一个。用户可以根据下拉菜单选择显示一个、几个或所有图表。下拉列表与允许多个值的参数相关联。见下文:

问题在于,如果用户从下拉列表中选择一个或几个小时,所有图表都会显示,并且选择的图表会提供数据,而其他人会说“没有可用的数据”。

目前,如果在下拉列表中选择了值,我已为每个图表添加以下内容以显示数据:

=Switch(Parameters!HOURINPUT.Value(0) = "0", false)

有没有办法隐藏用户没有从下拉菜单中选择的图表?

隐藏图表并仅查看已选择的图表比在其中显示“无可用数据”的空白框看起来更好。

更新:

多个参数。

【问题讨论】:

    标签: oracle reporting-services charts ssrs-2008


    【解决方案1】:

    假设图表之间的唯一区别是指定的一天中的小时,那么我建议:

    • 在报表中添加一个新数据集,其值为在输入的HOURINPUT 参数中选择的值 0 到 23 - 类似于:with cte as (select 0 n union all select n+1 n from cte where n < 23) select n report_hour from cte where n in (@HOURINPUT)
    • 向报表添加一个新的 tablix,其中只有一个详细信息单元格,绑定到您的新数据集。
    • 将现有图表之一移动到新表的详细信息单元格中,使其成为子报表,将图表中的所有硬编码时间引用替换为对新数据集中 report_hour 值的引用。
    • 然后您可以删除其他 23 个图表。

    除了确保仅显示所选时间的图表外,这还应该简化报告的未来维护,因为对图表所需的任何更改只需输入到一个图表上(而不是全部 24 个) .

    【讨论】:

    • 我有多个参数。请参阅上面的更新。另外,如果这有什么不同,我正在使用 Oracle。我尝试使用您的查询从我的 HOURINPUT 参数中选择值,但它不起作用。为数据集选择参数值的最简单方法是什么?
    • 感谢您的帮助,但我发现很难按照您的指示进行操作。我需要更多细节。你能提供吗?我添加了一个创建小时数的新数据集,并获得了 HOURINPUT 参数以从该查询中获取它的值。那么接下来你要我删除除一个之外的所有图表,然后用它做什么?
    • @Frank:是的,它(几乎)总是会影响您使用的 RDBMS;对于 Oracle,它还取决于您使用的版本,因为 recursive CTE 仅在 Oracle 11g 中引入。 (在没有指定 RDBMS 的情况下,很明显假设 SSRS 正在与 MS SQLServer 一起使用。)另外,我说过要添加一个数据集,其值在 HOURINPUT 参数中选择为 0 到 23,而不是使用该数据集填充参数;例如,如果用户选择值 0、3 和 13,则新数据集应返回值 0、3 和 17。
    • @Frank:如果您使用的是 Oracle 11g,您只需将 @ 更改为 :;如果您使用的是旧版本的 Oracle,请尝试以下查询:select * from (select level-1 report_hour from dual connect by level <= 24) where report_hour in (:HOURINPUT)。请按照上述答案中的后续步骤操作。
    • 你的建议似乎可行,但我只是在执行这些步骤时遇到了一些麻烦,请帮忙。当您说“将新的 tablix 添加到报表中,仅包含单个详细信息单元格,绑定到新数据集”时,您的意思是创建一个新报表,并为其类别组提供绑定到新数据集的详细信息吗?我只是不太清楚您创建子报告是什么意思...
    猜你喜欢
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    相关资源
    最近更新 更多