【发布时间】:2017-02-28 21:44:29
【问题描述】:
理想的最终结果是有一个图表,无论何时生成,都会显示除最新值之外的所有值。因此,如果此时在我的数据集中,我今年的最后一个时期是 12,我希望所有去年和今年的时期都出现,除了最后一个时期是 12。
事实上,我有 3 个字段:Year、Period 和 Delay。
年份简单显示为:2017。共有 13 个期间,它们显示为:01、02、03、[...]、13。为了方便起见,我创建了一个字段
Fields!YearPeriod.Value =Fields!Year.Value+Fields!Period.Value
所以现在,我可以单独使用 2 个字段,并且 YearPeriod 显示如下(示例):201701。所以这允许我使用 Max() 函数来隔离我试图排除的最后一个时期。
Max(Fields!YearPeriod.Value)
这就是我卡住的地方!我尝试在我的图表上使用过滤器,但我收到一条错误消息,指出过滤器不能具有 First、Last、Max、Min 等功能。所以我尝试在我的图表值中使用 IIF, (见下文)但一旦我生成,它就会向我显示一个完全空的图表。:
=IIF(Fields!YearPeriod.Value=Max(Fields!YearPeriod.Value), Nothing, Fields!Delay.Value)
所以,我尝试使用图形属性/可见性部分并应用了类似的功能,但更糟糕的是:它使整个图形一起消失...
这似乎是一件非常简单的事情,但最后,我肯定被卡住了。谢谢大家!
【问题讨论】:
-
如果您知道当前的第 13 年期间是您要始终过滤掉的那个,您可以在过滤器中使用如下内容:
=IIF(Fields!YearPeriod.Value = CINT(Cstr(Today.Year) & "13"),Nothing,Fields!Delay.Value)。 -
@Alejandro 感谢 Alejandro,但是,当前周期会随着时间的推移而变化,并且他的报告所针对的用户必须具有最少的输入才能生成它。不幸的是,Period 字段本身也没有与固定日期相关联(每年更改)...我只是尝试了另一种方法,我尝试使用 N 次/高级,但结果如下:使用 N 高级 = 1 它保持(而不是排除)最后一个时期。而 N 较差,我需要指出要保留的 N 的数量,所以我做了 Count()-1 但我收到一个错误消息,说聚合不能在过滤器中使用.. (X_X")
-
您是否在图表的类别组中使用 YearPeriod 字段?
-
@Alejandro 是的,为简单起见,我唯一的类别组是 Fields!YearPeriod.Value,我的值是 Fields!Delay.Value。顺便说一句,我尝试在我的过滤器中使用 RowNumber()-1 而不是 Count()-1 并且我得到相同的“不允许聚合”错误。基本上,我需要我的过滤器排除 N Superior=1 值并且不包括,因为过滤器是默认设置的......我找到了这样的解决方案 NOT LIKE [=IIf(Not(Fields!XXXX.Value Like "TEST" ), 0, 1)],我试图模仿这个无济于事。关于这个你有什么建议吗?类似 [IIF(Not(Fields!YearPeriod.Value N SUPERIOR 1), 0,1)]?
标签: reporting-services filter reportbuilder