Показать многострочный график в SSRS - PullRequest
0 голосов
/ 27 января 2020

Я разрабатываю отчет в SSRS, где мне нужно показывать данные по графику. Линейная диаграмма зависит от параметра, выбранного пользователем.

Теперь моя проблема заключается в том, как создать линейную диаграмму на основе выбранного параметра. Иногда линейная диаграмма может быть 2, а иногда 4, в зависимости от выбранного пользователем параметра.

Пожалуйста, посоветуйте, как это сделать.

1 Ответ

1 голос
/ 27 января 2020

В следующем примере я использовал некоторые базовые c данные о населении, он возвращает

Страна, год и население.

Здесь SQL для генерации данных выборки

DECLARE @t TABLE(Country varchar(20), [Year] int, Population float)

INSERT INTO @t VALUES
('France', 2000, 59.0),
('France', 2005, 61.1),
('France', 2010, 62.9),
('France', 2015, 64.5),
('France', 2020, 65.3),
('Germany', 2000, 81.4),
('Germany', 2005, 81.6),
('Germany', 2010, 80.8),
('Germany', 2015, 81.8),
('Germany', 2020, 83.8),
('UK', 2000, 58.9),
('UK', 2005, 60.3),
('UK', 2010, 63.5),
('UK', 2015, 65.9),
('UK', 2020, 67.9)

SELECT * FROM @t
    WHERE Country = @Country

В последнем предложении WHERE используется параметр @Country, который будет передан из отчета.

Подход

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

Создать дополнительный отчет

Я создал новый отчет, добавил набор данных используя запрос выше и вызвал набор данных dsPopulation. Это автоматически генерирует параметр @Country. С этим параметром не нужно ничего делать, поскольку пользователь не будет использовать его напрямую.

Затем я добавил линейную диаграмму в отчет и перетащил Population в раздел Values, Year для раздел Category Groups и Country в раздел Series Groups, как показано ниже.

enter image description here

Сохраните отчет, назовите его как-нибудь как _sub_PopulationReport

.

Теперь создайте основной отчет

Создайте новый отчет.

Добавьте новый набор данных 'dsCountries', который содержит список разных стран. Вам придется решить, как лучше это сделать. Вы могли бы сделать что-то вроде SELECT DISTINCT Country FROM myDataTable ORDER BY Country. Для этого примера я буду жестко закодировать список.

Запрос набора данных выглядит следующим образом:

DECLARE @t TABLE(Country varchar(20))
INSERT INTO @t VALUES
('France'), ('Germany'), ('UK')

SELECT * FROM @t
    WHERE Country IN (@Country)

Это автоматически создаст параметр Country. Отредактируйте параметр и установите список доступных значений в список стран. Вы можете сделать это, указав на запрос, просто добавив их вручную.

Установите для параметра значение Multi-Value

Теперь добавьте таблицу в дизайн отчета.

Затем щелкните правой кнопкой мыши любой заголовок строки или столбца (любой будет работать) и выберите «Свойства табликса». Задайте для параметра «Имя набора данных» только что созданный набор данных (dsCountries).

Затем удалите строку заголовка и два столбца, чтобы у вас осталась одна «ячейка».

Сделайте таблицу достаточно широкой, чтобы уместить вашу диаграмму (высота не важна).

Внутри оставшейся ячейки щелкните правой кнопкой мыши и выберите «Вставить => Подотчет»

Правая щелкните заполнитель <Subreport> и выберите «Свойства подотчета». Под опцией «Использовать этот отчет как подотчет» выберите отчет, который мы создали ранее (_sub_PopulationReport).

Нажмите слева вкладку «Параметры», затем «Добавить»

Под » Имя "выберите или введите Country и в поле" Значение "выберите или введите [Country]

Вот и все!

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

enter image description here

Если я запускаю отчет для и выбираю 1 страну, я получаю это ..

enter image description here

Если я выберу больше стран (все они в данном случае), я получу это ...

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...