2011-11-28 138 views
8

我看起來很高,看起來似乎找不到一個相當直接的問題(我會認爲)的答案。SSRS折線圖不連接數據點

我有一個折線圖,在一系列的幾個點上有數據,但只有一組點連接起來。

有誰知道這是爲什麼?這與我的數據有關嗎?如果是這樣,我很難看到數據中可能解釋此行爲的任何關係。

這裏是我的意思是:

Messed up data points

正如你可以看到,紅色的鑽石應該連接 - 同樣可以對藍色正方形和深藍色的三角形來表示。有什麼想法嗎?

道歉,如果我的顏色不對 - 我是色盲。

回答

16

好吧,所以我解決了這個問題。

首先,爲了使線條加起來,您需要設置該系列的EmptyPoint顏色。

  1. 在圖表中選擇一系列
  2. 在屬性選項卡(而不是對話框)鑽到EmptyPoint屬性並設置顏色爲黑色

這將讓他們加入了 - 好極了!但是部分線條是彩色的,另一部分是黑色的,對嗎?這有點愚蠢,尤其是考慮到如果您將顏色設置爲EmptyPoint上的自動顏色,它將變爲透明。

那麼,我們需要讓系列和EmptyPoint的顏色同步。 使用here的代碼。我在報告的代碼中添加了一些代碼。

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的顏色時。

  1. 選擇系列
  2. 在屬性選項卡貼下面的內容(與您的系列組名稱替換WhateverTheGroupIsForYourSeries):=Code.GetColor(Fields!*WhateverTheGroupIsForYourSeries*.Value)
  3. 鑽到EmptyPoint系列屬性的色彩元素
  4. 粘貼與第二點相同的文本[例如=Code.GetColor(Fields!*WhateverTheGroupIsForYourSeries*.Value)]

瞧!你完成了! 我不敢相信這是多麼困難:D

+0

一切工作正常,直到我嘗試了步驟2和4.問題是與訪問GetColor函數。看起來在定義GetColor函數的報告屬性中編寫的代碼在顏色元素中無法訪問。任何想法如何解決這個問題。我正在使用RDLC,而不是報告服務上的RDL。 – learner

+0

找出我的錯誤!我提供的系列名稱有一個錯字。你的解決方案奏效謝謝。我現在看到的唯一問題是傳說的顏色混亂了。有不止一個相同顏色的外觀。 – learner

+0

我正在使用CountRows()來計算我的Y值,這給了我空錯點的錯覺,但卻是實際值爲零的點。爲了解決這個問題,我將我的Y值更改爲 = IIF(CountRows()> 0,CountRows(),Nothing) – Towler

1

我只是有一個問題,它顯示的是標記而不是線條。我最終通過將表達式包裝在一個CInt()中將其轉換爲整數來解決它。

+0

你能解釋一下這個代碼示例嗎?我有興趣嘗試此解決方案。 –

+0

這個解決方案對我來說非常合適。選擇圖表值字段,單擊箭頭並選擇表達式,然後用CINT([您的表達式])將所有內容包裝在內。謝謝SteveCav – MrsTapp

0

處理這個問題的另一種方法是做一個遞歸選擇(如果你有非常大的數據集不這樣做,它會殺死性能)。所以,你可以讓你的數據集:

SELECT *, ROW_NUMBER() over(partition by Store order by Date desc) as rn 
FROM StorePerformance 

現在你可以有你的類別組RN(它應該由RN和排序由RN羣)一個標籤,但選擇的日期。這仍然會在x軸上顯示日期,但由於您正在通過rn進行分組,因此數據仍然是連續的,並且所有行都會連接。你的傳奇仍然會匹配。

我還沒有深入瞭解這個數據點有多大,因爲我們正在繪製行號和顯示日期,但是如果您主要關注的是可視化行中的趨勢並且不關心在哪裏他們在某個特定的時間點相互關聯,它會爲你服務。否則,我會按照原來的方式離開圖表,只讀取繪圖點,這些點仍然是有效的數據。