我认为我在SSRS中发现了一个错误,或者也许我缺少了一些东西。
基本上,如果我在两个图表之间的文本框中 中使用查找,则第二个图表中的 legacy 值不正确,查找功能将找不到不匹配的匹配项但这“应该”可以,因为文档说它将返回第一个值。实际上,使用查找的文本框返回的是我所期望的,这是紧随其后的图表出错了。
我将从结果开始,然后简要介绍如何重现该结果。
在下面的图像中,您将看到2个饼图,第一个饼图通过Chart =1
过滤(通过图表过滤器),第二个饼图在Chart =2
上过滤。他们俩都从同一个数据集(dsCharts
)中获取数据,其结果显示在图表下方的表格中。
在第二张图表上,我向图例添加了更多值,以便可以确切地看到显示的记录,但这只是在发现问题之后,默认图例属性仍会显示此问题。
这是使用VS2015和SSRS 2016构建的。部署的版本还显示了相同的错误,因此不仅仅是Visual Studio。
第二个图表中的顶部图例条目应显示“ Mega brand”,但它显示了上表中的最后一个条目。实际的饼图数据是正确的(48%)
绿色文本框使用查找,并且如果查找没有得到正确的值,则会发生此问题。
如果将文本框移动到第二张图表下方,它将按预期工作。
LOOKUP函数如下。
=LOOKUP(2, Fields!Chart.Value, Fields!Title.Value, "dsCharts")
如您所见,这将不会返回唯一值(虽然并返回正确的值也可以)。
如果我更改查找以返回像这样的唯一值...
=LOOKUP(3, Fields!Chart.Value + Fields!rnk.Value, Fields!Title.Value, "dsCharts")
一切正常。 (以上只是添加了图表和rnk列,因此三个总会从图表2行中获得第一个标题)
总而言之:如果我将文本框移到第二张图表下方,则可以正常工作。如果我更改查找以获取唯一值,它也可以正常工作。
问题
我在这里错过了什么吗?当然,这感觉不像是“按设计的功能”。
如果有人要对其进行测试,则下面的链接是RDL。 (您需要将连接信息更改为实际的服务器/数据库,但除此之外,它应该可以正常工作。
https://1drv.ms/u/s!AvWOxxoIjY1UlxJBS7uwiAc4godK
如果您要从头开始,这里是创建数据集dsCharts
的SQL。
DECLARE @t TABLE (CHart int, SegID int, Caption varchar(50), PeriodID int, PeriodDesc varchar(10), Title varchar(50), Others int, Amount float, rnk int, PcShare float)
INSERT INTO @t VALUES
(1, 4, 'Mega Brand', 2017000, '2017', 'Top 5 Brands Volume Share, 2017', 0, 2641.02756210156, 1, 0.4486715547),
(1, 5, 'Big Brand', 2017000, '2017', 'Top 5 Brands Volume Share, 2017', 0, 887.87929700944, 2, 0.1508375718),
(1, 311, 'Average Brand', 2017000, '2017', 'Top 5 Brands Volume Share, 2017', 0, 405.48776698076, 3, 0.0688863794),
(1, 3, 'Mediocre Brand', 2017000, '2017', 'Top 5 Brands Volume Share, 2017', 0, 399.3852463092, 4, 0.0678496513),
(1, 297, 'Some other brand', 2017000, '2017', 'Top 5 Brands Volume Share, 2017', 0, 264.67433915592, 5, 0.0449642589),
(1, 148, 'Cheap stuff', 2017000, '2017', 'Top 5 Brands Volume Share, 2017', 0, 342.83011182646, 8888, 0.0582417697),
(1, 141, 'Others', 2017000, '2017', 'Top 5 Brands Volume Share, 2017', 1, 945.042844878088, 9999, 0.1605488138),
(2, 4, 'Mega-Brand', 2017000, '2017', 'Top 5 Brands Value Share, 2017', 0, 4231.13539284372, 1, 0.4825376523),
(2, 5, 'Big-Brand', 2017000, '2017', 'Top 5 Brands Value Share, 2017', 0, 1311.73933399895, 2, 0.1495966354),
(2, 311, 'Average Brand', 2017000, '2017', 'Top 5 Brands Value Share, 2017', 0, 675.765818425164, 3, 0.077067364),
(2, 3, 'Mediocre Brand', 2017000, '2017', 'Top 5 Brands Value Share, 2017', 0, 561.11919104568, 4, 0.0639925485),
(2, 286, 'Smaller brand', 2017000, '2017', 'Top 5 Brands Value Share, 2017', 0, 398.869530857333, 5, 0.0454888698),
(2, 148, 'Cheap stuff', 2017000, '2017', 'Top 5 Brands Value Share, 2017', 0, 398.733393643842, 8888, 0.0454733441),
(2, 141, 'Others', 2017000, '2017', 'Top 5 Brands Value Share, 2017', 1, 1191.14560398701, 9999, 0.1358435857)
SELECT * FROM @t
要再现布局必须如上图所示,两个文本框中的查找如上所述,但是第一个使用1
作为查找值(第一个函数参数)而不是2。 / p>