3

我有一个折线图,其中 Y 值设置为

=CountRows()

我有一个类别组,其中分组

=CDate(Fields!END_MONTH_NB.Value)

我正在尝试动态设置 Y 轴的间隔,以便在范围太小时不会出现分数(见下文)。

Y 轴上的分数

我尝试将区间表达式设置为

=iif(CountRows() <= 5, 1, "Auto")

如果总行数小于或等于 5,则可以正常工作,但我真正需要的是 CountRows() 将在我的类别组的上下文中返回的最大值。

知道如何做到这一点吗?

4

1 回答 1

4

由于您使用的是 SSRS 2012,因此您可以使用聚合功能的聚合来实现此目的。

假设我有一个这样的图表,类似于你的:

在此处输入图像描述

使用适当的数据,它与您的屏幕截图具有相同的问题,即使在 Y 轴间隔中使用表达式:

在此处输入图像描述

即这里有 8 行,因此表达式将设置为Auto,但由于组不超过三行,我们在 Y 轴上得到分数。

我们可以通过找到每个组计数的最大值来解决这个问题。

类别组将有一个名称:

在此处输入图像描述

在这里,我将其称为MonthGroup。有了这个,我们可以改变 Y 轴间隔表达式:

=IIf(Max(CountRows("MonthGroup")) <= 5, 1, Nothing)

即如果 <=5,则间隔为1,否则只需传递一个 NULL 值,即让 SSRS 确定间隔。

所以现在我们正在检查MaxCategory Group 级别CountRows;在我的示例中这是 3,所以现在我们得到了所需的轴间隔:

在此处输入图像描述

编辑说明:

以前我的 Y 轴表达式为:

=IIf(Max(CountRows("MonthGroup")) <= 5, 1, "Auto")

但是在发布后我注意到这在某些情况下会引起警告;大概是因为Auto不是一个有效的区间;它只是 SSRS 使用的占位符。更新后的表达式:

=IIf(Max(CountRows("MonthGroup")) <= 5, 1, Nothing)

按预期工作,没有警告。

于 2013-08-08T14:28:39.593 回答