2011-11-28 43 views
8

Tôi đã nhìn cao và thấp và dường như không thể tìm thấy câu trả lời cho những gì dường như là một vấn đề khá đơn giản (tôi nghĩ).Biểu đồ đường SSRS không kết nối điểm dữ liệu

Tôi có biểu đồ dạng đường nơi có dữ liệu ở một vài điểm trong một chuỗi nhưng chỉ có một tập hợp các điểm liên kết.

Có ai biết tại sao điều này không? Có liên quan gì đến dữ liệu của tôi không? Nếu có, tôi đang đấu tranh để xem bất kỳ mối quan hệ nào trong dữ liệu có thể giải thích hành vi này.

Dưới đây là những gì tôi có nghĩa là:

Messed up data points

Như bạn có thể thấy, những viên kim cương màu đỏ nên được kết nối - như vậy có thể nói về các ô vuông màu xanh và hình tam giác màu xanh đậm. Có suy nghĩ gì không?

Xin lỗi nếu màu của tôi sai - Tôi bị mù màu.

Trả lời

16

Được rồi, vì vậy tôi đã làm việc này.

Thứ nhất, để có được các đường kết nối, bạn cần đặt màu EmptyPoint cho chuỗi.

  1. chọn hàng loạt của bạn trong biểu đồ của bạn
  2. Trong tab thuộc tính (không phải hộp thoại) đi sâu vào các tài sản EmptyPoint và thiết lập màu là đen

Điều này sẽ làm cho họ tham gia lên - yay! Nhưng một phần của dòng là màu sắc và phần khác là màu đen, phải không? Đó là một chút ngớ ngẩn, đặc biệt là xem xét nếu bạn để lại màu sắc để tự động trên EmptyPoint rằng nó sẽ được minh bạch.

Vì vậy, sau đó chúng ta cần phải lấy chuỗi và màu của EmptyPoint được đồng bộ hóa. Sử dụng mã từ here. Tôi đã thêm một số mã vào mã của báo cáo.

1). Nhấp chuột phải vào một khoảng trống trên báo cáo và chọn "Thuộc tính báo cáo"
2). Trong tab mã, hãy dán như sau:

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 

Sau đó, chúng tôi cần gọi mã này khi đặt màu của chuỗi và EmptyPoint.

  1. Chọn loạt
  2. của bạn Trong các thuộc tính tab dán một cái gì đó như sau (thay thế WhateverTheGroupIsForYourSeries với tên nhóm hàng loạt của bạn): =Code.GetColor(Fields!*WhateverTheGroupIsForYourSeries*.Value)
  3. khoan xuống đến các yếu tố màu sắc của các tài sản EmptyPoint Dòng
  4. Dán văn bản giống như từ điểm hai [ví dụ =Code.GetColor(Fields!*WhateverTheGroupIsForYourSeries*.Value)]

Và thì đấy! Bạn đã hoàn tất! Tôi không thể tin rằng điều này là khó khăn như thế nào: D

+0

Mọi thứ hoạt động tốt cho đến khi tôi thử các bước 2 và 4. Vấn đề là truy cập chức năng GetColor. Có vẻ như Mã được viết trong thuộc tính báo cáo xác định hàm GetColor không thể truy cập ở đây trong phần tử màu. Bất kỳ ý tưởng làm thế nào để giải quyết này. Tôi đang sử dụng RDLC chứ không phải RDL trên các dịch vụ báo cáo. – learner

+0

Đã tìm ra lỗi của tôi! Tên dòng tôi cung cấp có lỗi đánh máy. Bạn đã làm việc giải pháp. Cảm ơn. Vấn đề duy nhất tôi thấy bây giờ là màu huyền thoại bị rối tung lên. Có nhiều hơn một xuất hiện cùng màu. – learner

+0

Tôi đã sử dụng CountRows() cho Giá trị Y của tôi, điều này đã cho tôi ảo giác về Điểm trống, nhưng là điểm thực tế với giá trị bằng 0. Để giải quyết vấn đề đó, tôi đã thay đổi Giá trị Y thành = IIF (Số đếm()> 0, CountRows(), Không có gì) – Towler

1

Tôi vừa gặp sự cố khi hiển thị điểm đánh dấu chứ không phải là đường kẻ.Tôi đã giải quyết nó bằng cách gói biểu thức trong một CInt() để chuyển đổi nó thành một số nguyên.

+0

Bạn có thể giải thích điều này thêm một chút với một ví dụ về mã không? Tôi quan tâm đến việc thử giải pháp này. –

+0

Giải pháp này làm việc hoàn hảo cho tôi. Chọn trường giá trị biểu đồ, nhấp vào mũi tên và chọn Biểu thức, sau đó bọc bất kỳ thứ gì trong đó bằng CINT ([biểu thức của bạn]). Cảm ơn bạn SteveCav – MrsTapp

0

Một cách khác để xử lý việc này là thực hiện chọn đệ quy (nếu bạn có bộ dữ liệu rất lớn không làm điều này, nó sẽ giết hiệu suất). Vì vậy, bạn có thể làm cho tập dữ liệu của mình:

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

Bây giờ bạn có thể có nhóm danh mục của mình là rn (nhóm này được nhóm theo rn và sắp xếp theo rn) nhưng chọn ngày cho nhãn của nó. Điều này sẽ vẫn hiển thị ngày trên trục x của bạn, nhưng vì bạn đang nhóm theo rn, dữ liệu sẽ vẫn liên tục và tất cả các dòng sẽ kết nối. Ngoài ra truyền thuyết của bạn vẫn sẽ phù hợp.

Tôi vẫn chưa xem xét mức độ thay đổi điểm dữ liệu vì chúng tôi đang lập kế hoạch với số hàng và ngày hiển thị, nhưng nếu bạn chủ yếu quan tâm đến việc hình dung xu hướng trong dòng và không quan tâm đến họ đang ở một thời điểm nhất định trong mối quan hệ với nhau, nó sẽ phục vụ bạn tốt. Nếu không, tôi sẽ rời khỏi biểu đồ theo cách của nó và chỉ đọc các điểm cốt truyện, đó vẫn là dữ liệu hợp lệ.

Các vấn đề liên quan