2008-09-17 30 views
7

Tôi muốn có thể lặp qua tất cả các tham số đã xác định trên báo cáo của mình và tạo chuỗi hiển thị tên và giá trị tham số. Sau đó tôi sẽ hiển thị các kết quả trên báo cáo để người dùng biết các tham số nào được sử dụng cho việc thực hiện cụ thể đó. Vấn đề duy nhất là tôi không thể lặp qua bộ sưu tập Tham số. Có vẻ như không phải là một người lập chỉ mục trên bộ sưu tập tham số, cũng không có vẻ như thực hiện IEnumerable. Có ai có thể thực hiện được điều này không? Tôi đang sử dụng SSRS 2005 và nó phải được thực hiện trong Mã Báo cáo (tức là, không có lắp ráp bên ngoài). Cảm ơn!SSRS 2005 - Lặp qua các tham số báo cáo

Trả lời

1

Thật không may, có vẻ như không có cách nào đơn giản để thực hiện việc này. Xem http://www.jameskovacs.com/blog/DiggingDeepIntoReportingServices.aspx để biết thêm thông tin. Nếu bạn nhìn vào comments of that post, có một số cách để giải quyết vấn đề này, nhưng chúng không rất thanh lịch. Giải pháp đơn giản nhất sẽ yêu cầu bạn có một danh sách các tham số báo cáo ở đâu đó trong Mã Báo cáo của bạn, điều này rõ ràng vi phạm nguyên tắc DRY, nhưng nếu bạn muốn giải pháp đơn giản nhất, bạn có thể phải sống với điều đó.

Bạn có thể muốn suy nghĩ lại ràng buộc của bạn về việc không có lắp ráp bên ngoài, vì có vẻ như tôi sẽ dễ dàng hơn khi thực hiện việc này với lắp ráp bên ngoài. Hoặc nếu báo cáo của bạn sẽ không thay đổi nhiều, bạn có thể tạo danh sách các tên tham số và giá trị theo cách thủ công.

+0

Tôi không nhận ra ý của anh ấy từ bên trong báo cáo trong khi báo cáo hiển thị. Tôi sẽ sử dụng phản ánh để poke xung quanh bên trong Microsoft.ReportingServices.ReportProcessing.ReportObjectModel.Parameters để xem liệu nó có thể được đúc đến một cái gì đó dễ tiếp cận hơn. –

0

Nếu tôi hiểu câu hỏi của bạn, chỉ cần làm những gì tôi làm: Thả hộp văn bản vào báo cáo, sau đó trong khi bạn đang thiết lập báo cáo, hãy chèn như sau: = "Parameter1:" + Parameters! Label + ", Parameter2:" + Parameters! Parameter2.Label ...

Cấp, nó không phải là điều đẹp nhất, nhưng nó hoạt động khá tốt trong ứng dụng của chúng tôi.

Và tôi đang sử dụng Nhãn thay vì Giá trị vì chúng tôi có giá trị ngày giờ và người dùng chỉ quan tâm đến ngày ngắn hoặc tháng và năm (tùy theo hoàn cảnh) và tôi đã thực hiện công việc định dạng đó thiết lập các tham số.

0

Tôi có thể nghĩ ra ít nhất hai cách để thực hiện việc này. Việc đầu tiên có thể làm việc, thứ hai chắc chắn sẽ hoạt động.

  1. Sử dụng dịch vụ web. Tôi khá chắc chắn rằng tôi đã thấy API để nhận được một tập hợp các thông số. Thậm chí nếu không có quyền truy cập trực tiếp, bạn luôn có thể tạo một bộ sưu tập tiêu chuẩn và sao chép các đối tượng ReportParameter từ một đến khác trong vòng lặp foreach - và sau đó truy cập Count, với các thuộc tính tham số riêng lẻ có sẵn bằng cách bỏ qua các cá thể ReportParameter.

  2. Báo cáo là RDL. RDL là XML. Tạo một XmlDocument và tải tệp RDL, sau đó sử dụng DOM để làm, tốt, bất cứ điều gì bạn thích tối đa và bao gồm đặt giá trị mặc định hoặc thậm chí viết lại chuỗi kết nối.

Nếu ứng dụng của bạn không có quyền truy cập hệ thống tệp vào tệp RDL, bạn có thể tải chúng qua dịch vụ web.

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