在SSRS中显示多条线形图

问题描述 投票:0回答:1

我正在开发SSRS中的报告,其中我必须在折线图中显示数据。折线图因用户选择的参数而异。

现在,我的问题是如何根据所选参数制作折线图。根据用户选择的参数,折线图有时可能是2,有时可能是4。

请提出建议。

reporting-services ssrs-2008
1个回答
0
投票

在下面的示例中,我使用了一些基本的人口数据,它返回了

国家,年份和人口。

这里是生成示例数据的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参数。编辑参数并将可用值列表设置为国家/地区列表。您可以通过将其指向仅手动添加它们的查询来执行此操作。

将参数设置为多值

现在将表添加到报表设计中。

[下一步,右键单击任何行标题或列标题(任何一个都将起作用),然后选择“ Tablix属性”。将“数据集名称”选项设置为刚创建的数据集(dsCountries)。

接下来,删除标题行和两列,这样您就剩下一个'单元格'。

使表足够宽以适合您的图表(高度不重要)。

在剩余单元格中,右键单击并选择“插入=>子报表”

右键单击<Subreport>占位符,然后选择“子报表属性”。在选项“将此报告用作子报告”下,选择我们之前创建的报告(_sub_PopulationReport)。

单击左侧的“参数”选项卡,然后单击“添加”

在“名称”下选择或键入Country,在“值”下选择或键入[Country]

就是这样!

报表设计应该看起来像这样...(请注意,我的子报表名称与上面的名称不同,请忽略此。)

enter image description here

如果我运行报告并选择1个国家/地区,则会得到此。。

enter image description here

如果我选择更多的国家(在这种情况下是所有国家),我会得到这个...

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.