我想我在ssrs中发现了一个bug或者我遗漏了什么。
基本上,如果我在文本框中使用查找
之间
两张图表,
传奇
第二个图表中的值不正确,查找函数将找不到unqiue匹配项,但“应该”没有问题,因为文档中说它将返回第一个值。实际上,使用查找的文本框返回的是我所期望的结果,正是紧随其后的图表出错了。
我将从结果开始,然后简要介绍如何重现这一点。
在下图中,您将看到两个饼图,第一个被过滤(通过图表过滤器)
Chart =1
第二个在
Chart =2
. 他们都从同一个数据集中获取数据(
dsCharts
,结果见下表。
在第二个图表中,我向图例中添加了更多的值,以便可以确切地看到正在显示的记录,但这只是在我发现问题之后,默认图例属性仍然显示此问题。
这是使用VS2015和SSRS 2016构建的。部署的版本也显示了相同的bug,因此它不仅仅是一个visual studio的东西。
第二个图表中最上面的图例项应该显示“大品牌”,但它显示了上一个图表中的最后一个条目。实际饼图数据正确(48%)
绿色文本框使用查找,如果查找未获得unqiue值,则会出现此问题。
如果我将文本框移到第二个图表下方,它将按预期工作。
查找函数如下所示。
=LOOKUP(2, Fields!Chart.Value, Fields!Title.Value, "dsCharts")
如您所见,这不会返回一个唯一的值(尽管返回了正确的值,但这是可以的)。
如果我更改查找以返回这样的唯一值…
=LOOKUP(3, Fields!Chart.Value + Fields!rnk.Value, Fields!Title.Value, "dsCharts")
一切正常。(上面只是添加了chart和rnk列,因此三个列将始终从chart 2行中获得第一个标题)
总而言之:如果我把文本框移到第二个图表下面,它就可以正常工作了。如果我更改查找以获得唯一值,它也可以正常工作。
问题
我是不是丢了什么东西?这当然不像是“按设计”的功能。
下面的链接是RDL,以防有人想测试它。(您需要将连接信息更改为实际的服务器/数据库,但除此之外,它应该可以正常工作。
https://1drv.ms/u/s!AvWOxxoIjY1UlxJBS7uwiAc4godK
下面是创建数据集的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。