Ярлыки серии диаграмм SSRS: Поле! Axisfield.Value не текущее значение

Я пытаюсь динамически форматировать метки на своих диаграммах SSRS на основе базового значения. Я пытаюсь сделать это в двух сценариях: один для форматирования дат как порядковых чисел, а другой - для выбора подходящего количества десятичных знаков на основе имеющихся фактических значений. Однако, когда я использую редактор выражений с выражением вроде этого ...

=IIF(MAX(ABS(Fields![axisfield].Value))<2, "0.0%","0%")

... Fields! [axisfield] .Value всегда возвращает первое значение из набора данных, то есть в этом примере, если первое значение меньше двух, метки будут отформатированы с одним десятичный разряд, даже если он единственный меньше двух. (Так что функция «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-е и так далее, поскольку первая строка в наборе данных предназначена для первой.

Итак, мой вопрос: как мне обойти это и в первом примере получить истинный максимум, а во второй ссылке - фактическое форматируемое значение?

Спасибо!


person GreatApe    schedule 14.08.2015    source источник


Ответы (1)


У меня были те же проблемы с использованием пользовательских функций для настройки видимости меток. (см. мою запись об этом: Как отобразить только 1 метку значения в вычисляемой / производной серии SSRS 2012?)

Я считаю, что проблема в том, что данные и поля привязаны к базовому ряду данных, но не связаны и не доступны внутри самой метки.

Вы должны иметь возможность установить форматирование в функции для самих данных серии (как во втором примере), а затем просто установить метки данных, которые будут использовать значение поля базового ряда. Пример с вашими данными может быть примерно таким, что возвращает значения в формате:

="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, потому что вам нужно использовать агрегатную функцию при обращении ко всему набору данных. Только тогда вы можете ссылаться на конкретное значение.)

person DicreetAndDiscrete    schedule 19.05.2016