正如我最近发现的那样,这个问题通常是由 SSRS 未正确处理数据中的null 值引起的。在没有看到您的数据的情况下,我无法确定这是原因,但nulls 是我遇到相同行为的罪魁祸首。
解决方案通常涉及为系列上的EmptyPoint 属性的颜色分配值,有时与设置EmptyPointValue 一起指定null 处理。我在网上找到了很多关于这个问题的参考资料,但我只会发布最好的两个的链接,它们都在 StackExchange 上:
- 线程SSRS Line Chart NULL VALUE - Horizontal Line 包含对此问题的彻底讨论。给出的通常解决方法是使用
IIf 为每一行硬编码颜色表达式,但有时这不是一个选项,特别是如果您分组的字段具有动态的、不可预测的值,就像我的数据集所做的那样。
那里发布的图片描述了相同类型换行符的清晰示例。名为 trubs 的用户发布了一个代码示例,说明了如何设置 EmptyPoint,以防 Iif 起作用:
=iif(isNothing(Fields!SelectedValue.Value),'No Color',"LightBlue")
-
SSRS Line Chart Not Connecting Data Points 中的第一个回复详细说明了当
EmptyPoint 值和nulls 是根本原因并且简单的硬编码IIfs 无法解决问题时的解决方法。虽然我还没有让我的线条颜色以我想要的方式匹配点标记,但我可以验证这个解决方案至少可以让你的线条恢复原状,并允许你为它们分配各种颜色。它相当简单,只需为几个颜色属性粘贴一些 VB 代码。
在cmets部分被要求提供解决方案的详细信息,但不想抄袭,所以我将简单地直接引用JohnBob的答案:
首先,为了让行加入,你需要设置
系列的 EmptyPoint 颜色。
在图表中选择您的系列在属性选项卡中(不是
对话框)向下钻取 EmptyPoint 属性并将颜色设置为
变黑
这会让他们加入 - 耶!但线的一部分是颜色
另一部分是黑色的,对吧?有点傻,尤其是
考虑是否在 EmptyPoint 上将颜色保留为 Automatic
它将是透明的。
那么,我们需要获取系列和 EmptyPoint 的颜色
同步。使用此处的代码。我在代码中添加了一些代码
报告。
1)。右键单击报告上的空白处,然后选择“报告
属性” 2). 在代码选项卡中,粘贴以下内容:
Private colorPalette As String() = {"#418CF0", "#FCB441", "#E0400A", "#05642E", "#1A3B69", "#BFBFBF", "#E0400A", "#FCB441", "DarkBlue", "Tomato", "Orange", "CornflowerBlue", "Gold", "Red", "Green", "LightBlue", "Lime", "Maroon", "LightSteelBlue", "Tan", "Silver"}
Private count As Integer = 0
Private mapping As New System.Collections.Hashtable()
Public Function GetColor(ByVal groupingValue As String) As String
If mapping.ContainsKey(groupingValue) Then
Return mapping(groupingValue)
End If
Dim c As String = colorPalette(count Mod colorPalette.Length)
count = count + 1
mapping.Add(groupingValue, c)
Return c
End Function
那么我们需要在设置系列颜色的时候调用这段代码
和 EmptyPoint。
Select your series
In the properties tab paste something the following (replace WhateverTheGroupIsForYourSeries with your series group name):
=Code.GetColor(Fields!*WhateverTheGroupIsForYourSeries*.Value)
向下钻取到 EmptyPoint Series 属性的颜色元素
粘贴与第二点相同的文本[例如=Code.GetColor(Fields!*WhateverTheGroupIsForYourSeries*.Value)]
瞧!你完成了!我不敢相信有多么不必要的困难
这是:D
我希望这会有所帮助。