我正在尝试根据基础值动态格式化我的SSRS图表上的标签。我试图在两种情况下执行此操作,一种是将日期格式化为序数,另一种是根据存在的实际值选择适当的小数位数。但是,当我使用带有类似表达式的表达式编辑器时......
=IIF(MAX(ABS(Fields![axisfield].Value))<2, "0.0%","0%")
... Fields![axisfield] .Value 始终从数据集中返回第一个值,这意味着,在此示例中,如果第一个值小于2,则标签将为格式化为一个小数位,即使它是唯一小于2的小数位。 (因此'MAX'功能基本上无关紧要。)
该示例正在尝试根据系列中的最大数据点设置整体格式,在下一个我试图分别格式化每个标签以获取序数日期(即第1,第2等等,是的,这个公式是不完整的:它不需要说明问题):
="dd"+IIF(DatePart("d", Fields!date.Value)=1,"\s\t"
,IIF(DatePart("d", Fields!date.Value)=2,"\n\d"
,IIF(DatePart("d", Fields!date.Value)=3,"\r\d"
,"\t\h")))
这将给出第1,第2,第3等,因为数据集中的第一行是第一行。
所以,我的问题是,我如何绕过这个,在第一个例子中得到真正的最大值,在第二个参考中得到格式化的实际值?
谢谢!
答案 0 :(得分:0)
我在使用自定义功能设置标签可见性方面遇到了同样的问题。 (参见我的条目:How to Display Only 1 Value Label in SSRS 2012 Calculated/Derived Series?)
我认为问题在于数据和字段绑定到基础数据系列,但在标签本身内没有绑定和可访问。
您应该能够在函数中为系列数据本身设置格式(如第二个示例中所示),然后只设置数据标签,这将使用基础系列字段值。您的数据的示例可能类似于以下内容,它返回格式为的值:
="dd"+IIF(DatePart("d", Fields!date.Value)=1,Format(Fields!date.Value, "\s\t")
,IIF(DatePart("d", Fields!date.Value)=2,Format(Fields!date.Value,"\n\d")
,IIF(DatePart("d", Fields!date.Value)=3,Format(Fields!date.Value, "\r\d")
,Format(Fields!date.Value,"\t\h"))))
在第一个示例中,您可以获取引用数据集的最大值,而不是字段。那么你的代码就是:
=IIF(ABS(MAX(Fields![axisfield].Value, "YourDatasetName"))<2, "0.0%","0%")
(我更改了Abs和Max的操作顺序,因为在引用整个数据集时必须使用聚合函数。只有这样才能引用特定值。)