В следующем примере я использовал некоторые базовые 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
, как показано ниже.
Сохраните отчет, назовите его как-нибудь как _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]
Вот и все!
Дизайн отчета должен выглядеть примерно так ... (обратите внимание на мое имя подотчета отличается от описанного выше, игнорируйте это.)
Если я запускаю отчет для и выбираю 1 страну, я получаю это ..
Если я выберу больше стран (все они в данном случае), я получу это ...