【问题标题】:Chart series filtering图表系列过滤
【发布时间】:2015-11-06 15:55:09
【问题描述】:

我的柱形图中有六个系列,用于日期范围(例如 30 天)。这个图表看起来很拥挤:

用户有什么方法可以在 y 轴上应用系列过滤器和在 x 轴上应用日期过滤器,以在运行时查看图表上特定系列的显示?

我尝试使用报告参数。这没用。参数选择是否显示整个图表。我不知道这样做的确切方法。 SSRS 图表本身是否有机会在运行时显示过滤器,以便用户可以像在 Excel 中一样编辑过滤器?

【问题讨论】:

  • 你想如何驱动过滤?我相信你的选择是要么有特定的参数来让用户请求要过滤的系列/日期,要么有一个打开的子报告只显示你想要显示的系列。这两种方法听起来合适吗?
  • 感谢您的回复。我希望第一个选项让用户根据他们的要求过滤系列。
  • @Jonnus ,您有没有机会找到基于图表的选择性系列进行过滤的方法。谢谢

标签: excel reporting-services charts


【解决方案1】:

要过滤用户选择的参数,您可以遵循此过程。请注意,我是从这样一个基于 AdventureWorks 数据库的图表开始的。在此示例中,我将仅过滤 Region 字段。

  1. 首先,您需要定义一个新的数据集进行过滤。创建一个新数据集并将查询设置为相当于

    SELECT DISTINCT   SalesTerritory FROM myView
    UNION 
    SELECT 'All' AS SalesTerritory
    
  2. 现在您需要使用基于此数据集的值创建一个新参数。我创建了一个名为 RegionFilter 的变量,并将可用值设置为新数据集返回的值

    并且默认值设置为'All'

  3. 最后,您需要将图表上的过滤设置为为参数选择的值的结果。右键单击图表并选择图表属性... -> 过滤器

    设置表达式为

    =iif((Fields!SalesTerritory.Value = Parameters!RegionFilter.Value) OR (Parameters!RegionFilter.Value = "All"), 1, 0)
    

    而价值是

    =CInt(1)
    

    这实质上是将您提供的区域过滤器参数值与查询中的每条记录进行比较,仅允许匹配的记录,或者在选择“全部”的情况下,允许所有记录。

将报表放在一起后,首次运行时的外观将相同,因为默认值设置为All。但是,当您选择一个区域时,生成的图表将相应地过滤掉。

我希望您觉得这很有用,并且可以根据您的要求进行调整。如果您需要进一步的帮助,请告诉我

【讨论】:

  • 非常感谢,我今天就试试。
  • 我已按照您的步骤操作。我的图表的名称为 DataSet1。我有另一个名为 DataSet2 的数据集用于过滤。当我输入过滤表达式时,它会在字段上显示错误。由于图表的数据集不同,报告项目未链接到数据集。错误消息:“ReportItemExpression 仅指当前数据集范围”。你能否让我知道我在这里错过了哪一个。非常感谢
  • 在过滤表达式中你不需要引用dataset2,只需要你设置的参数,比如我上面例子中的Regionfilter
  • 在我的图表过滤器表达式中我有这个语句=iif((Fields!Category.Value = Parameters!RegionFilter.Value) OR (Parameters!RegionFilter.Value = "All"), 1, 0) .它在“字段!类别”上抛出错误,说未知的集合成员。这是我用于过滤数据集的字段。我必须将此字段添加到图表的数据集中吗?谢谢
  • 可能是一个愚蠢的问题,但是 dataset1 有一个名为 Category 的字段吗?
猜你喜欢
  • 2017-05-12
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
  • 2017-06-26
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多