Линейная диаграмма SSRS, динамическая ось Y

У меня есть линейная диаграмма, где значение Y установлено на

=CountRows()

и у меня есть группа категорий, которая группируется по

=CDate(Fields!END_MONTH_NB.Value)

Я пытаюсь динамически установить интервал оси Y, чтобы дроби не появлялись, когда диапазон слишком мал (см. Ниже).

Дроби по оси Y

Я попытался установить интервальное выражение на

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

который отлично работает, если общее количество строк меньше или равно 5, но мне действительно нужно максимальное значение, которое CountRows() вернет в контексте моей группы категорий.

Любая идея, как это сделать?


person Towler    schedule 08.08.2013    source источник
comment
Какая это конкретная версия SSRS?   -  person Ian Preston    schedule 08.08.2013


Ответы (1)


Поскольку вы используете SSRS 2012, для достижения этой цели можно использовать совокупность совокупных функций.

Скажем, у меня есть такая диаграмма, похожая на вашу:

введите здесь описание изображения

С соответствующими данными у него та же проблема, что и на вашем снимке экрана, даже с выражением в интервале оси Y:

введите здесь описание изображения

т. е. здесь 8 строк, поэтому для выражения будет задано значение Auto, но поскольку в группах не более трех строк, мы получаем дроби по оси Y.

Мы можем обойти это, найдя максимальное значение каждой из этих групп.

Группа категорий будет иметь имя:

введите здесь описание изображения

Здесь я назвал его MonthGroup. При этом мы можем изменить выражение интервала оси Y:

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

т. е. если ‹=5, интервал равен 1, в противном случае просто передайте значение NULL, т. е. пусть SSRS определит интервал.

Итак, теперь мы проверяем Max уровня группы категорий CountRows; в моем примере это 3, так что теперь мы получаем необходимые интервалы оси:

введите здесь описание изображения

Изменить примечание:

Раньше у меня было выражение оси Y как:

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

Но после публикации я заметил, что в некоторых случаях это вызывало предупреждение; предположительно потому, что Auto не является допустимым интервалом; это просто заполнитель, используемый SSRS. Обновленное выражение:

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

Работает как положено без предупреждений.

person Ian Preston    schedule 08.08.2013
comment
Работал как шарм. Спасибо! - person Towler; 08.08.2013