2008-11-10 31 views
27

Chúng tôi có một số báo cáo dịch vụ báo cáo máy chủ SQL. Tôi đã không viết nhưng tôi phải chăm sóc chúng.Dịch vụ báo cáo máy chủ SQL: cách dừng báo cáo kích hoạt khi mở

Các báo cáo này kích hoạt khi được mở trong trình duyệt và với các thông số mặc định (cụm từ tìm kiếm và các hạn chế trống) chúng truy xuất rất nhiều dữ liệu, chậm. Khách hàng muốn báo cáo không được tạo cho đến khi người dùng nhập thông số và nhấn "xem báo cáo"

Rất tiếc, tôi không biết SSRS ở mức nào - làm cách nào để dừng báo cáo khi mở?


Các chi tiết làm thế nào để làm điều đó trên một báo cáo triển khai (như mỗi câu trả lời Rihan Meij của) như sau:

Nhấn vào một báo cáo, nhấp vào "tài sản" ở đầu trang. Bạn có thể phải đợi một chút, vì báo cáo chậm có thể đang chạy ngay bây giờ. Sau đó nhấp vào "thông số" ở bên trái.

Đối với mỗi thông số, hãy đảm bảo rằng "Người dùng nhanh" được chọn và cho ít nhất một tham số, "Có mặc định" không được chọn. Nhấp vào "Xem" một lần nữa ở trên cùng bên trái (hoặc quay lại thư mục và nhấp vào tên báo cáo) để xem báo cáo và lưu ý rằng báo cáo không kích hoạt ngay lập tức.

Trong trình tạo báo cáo, bạn có thể thực hiện việc này thông qua trình đơn "Bộ lọc". Bỏ chọn các giá trị từ ít nhất một bộ lọc và lưu báo cáo.

Bạn cũng có thể dừng báo cáo khi kích hoạt khi tải khi báo cáo không có thông số?

+5

Thật tuyệt khi bạn giải thích nó bằng văn bản vì không có liên kết nào đến ảnh chụp màn hình được cung cấp bên dưới công việc nữa. – Bratch

Trả lời

13

tôi thấy rằng tôi đã phải thiết lập ít nhất một trong các thông số báo cáo không có một mặc định để giữ báo cáo từ autorunning.

tôi đã phải sử dụng cấu hình này (chú ý rằng tất cả 3 của các thông số tôi rời mà không mặc định chấp nhận Nulls nên người dùng chỉ có thể nhấp vào hộp kiểm Null):

[ảnh chụp màn hình mất tích]

để có được người dùng có thể thấy điều này và để giữ báo cáo từ autorunning:

[ảnh chụp màn hình mất tích]

+2

Thông tin quan trọng trong bài đăng này đã già đi do các liên kết bên ngoài vi phạm. Vui lòng khôi phục các ảnh chụp màn hình bị thiếu nếu bạn có thể. – deceze

3

Tôi đã làm điều đó bằng cách thay đổi truy vấn slighlty để yêu cầu tham số khi nó được chạy.

Sau đó tôi đã xuất bản báo cáo trên trang báo cáo, chỉ định tham số đó, sẽ nhắc người dùng. Điều này không có hiệu lực mà báo cáo không kéo máy chủ sql đến đầu gối của nó khi người dùng chỉ cần mở báo cáo để xem.

Xem attached screenshot (Một bức tranh nói một ngàn chữ, đúng :))

+4

Liên kết bị chặn 12 – Mike

+0

Liên kết của bạn đã chết trong "ảnh chụp màn hình đính kèm" –

1

tôi thấy cách tốt nhất là để thêm vào một tham số mà không cho phép null, nhưng không được sử dụng bởi các báo cáo. Điều này ngăn nó hiển thị lúc bắt đầu, nhưng không ảnh hưởng đến báo cáo.

Phía chỉ xuống là nếu bạn đang hiển thị báo cáo trong trình xem báo cáo, bạn có một hộp ở trên cùng trông hơi lạ. Tôi chắc rằng bạn có thể sử dụng một số C#/CSS để ẩn nó mặc dù.

Vì tôi không sử dụng trình xem báo cáo để hiển thị, chỉ để hiển thị ở mặt sau, điều này không ảnh hưởng đến tôi.

Thậm chí nếu bạn đang sử dụng trình xem báo cáo thì sẽ hữu ích khi phát triển!

1

Tôi đã làm điều này bằng cách chỉ cung cấp giá trị mặc định cho thông số chính không trả về bất kỳ kết quả nào.

+0

Ví dụ: nếu thông số chính của bạn lấy tên bộ phận dưới dạng văn bản, thì chỉ cần chỉ định giá trị mặc định là "KHÔNG-TỰ ĐỘNG-RUN", theo cách đó tập dữ liệu sẽ không cho kết quả. – George

+0

Đơn giản nhất và tuyệt vời - cảm ơn. Ví dụ của ngày hôm nay - phạm vi ngày - Tôi đã để lại năm mặc định của "toDate" trong quá khứ: fromDate mặc định = 7/1/2015 và toDate mặc định = 6/30/2014 ... và đoán xem? Không có gì xảy ra trong * đó * phạm vi ngày;) Vì vậy, khi họ lần đầu tiên thực hiện báo cáo, nó sẽ nhanh chóng trả về không có hàng. Sau đó, người dùng có thể chỉnh sửa cả thông số ngày và xem báo cáo. –

2

Tôi biết bài đăng này hơi cũ, nhưng vì tôi có một giải pháp khác ở đây, tôi chỉ đăng nó trong trường hợp ai đó cần nó.

Nếu bạn đang sử dụng ReportViewer, vị trí của nó có thể đặt thuộc tính ShowBody = "False". Sau đó, trên sự kiện OnSubmittingParameterValues, thay đổi thuộc tính ShowBody thành true. Sau đó, bạn không cần bất kỳ thông số hoặc thông số bổ sung nào không có giá trị mặc định trong báo cáo.

<rsweb:ReportViewer 
     ID="rv" 
     runat="server" 
     Width="100%" 
     Height="100%" 
     SizeToReportContent="false" 
     ZoomMode="PageWidth" 
     KeepSessionAlive="true" 
     ProcessingMode="Remote" 
     PromptAreaCollapsed="false" 
     InteractivityPostBackMode="AlwaysAsynchronous" 
     AsyncRendering="true" 
     ExportContentDisposition="AlwaysInline" 
     ShowReportBody="False" 
     ShowPrintButton="false" 
     OnSubmittingParameterValues="rv_SubmittingParameterValues"/> 

Và sau đó trong phương pháp rv_SubmittingParameterValues:

this.rv.ShowReportBody = true; 
3

tôi thiết lập giá trị mặc định của một trong những lựa chọn tham số của tôi để giá trị là -1 mà không tồn tại (không phải là một giá trị tham số hợp lệ). Điều này không tạo ra lỗi. Nó chỉ đơn giản là đặt hộp thả xuống tham số và ngăn không cho báo cáo chạy. Tôi không thể sử dụng một giá trị mặc định của NULL vì NULL chọn tất cả mọi thứ, và tôi muốn người dùng có mục đích làm cho việc lựa chọn của ALL (NULL) trước khi chạy báo cáo. Phải mất vài phút để báo cáo hiển thị nếu TẤT CẢ được chọn.

+0

mẹo thực sự hữu ích –

1

Tôi đã tìm thấy một mẹo hay khi làm việc với các báo cáo có các trường tùy chọn, nhưng kéo một lượng lớn dữ liệu nếu các trường tùy chọn trống.

Bước 1: Ngăn chặn Auto Firing

  • Hãy chắc chắn rằng "Cho phép giá trị null" không được kích hoạt cho các thông số tùy chọn
  • Hãy chắc chắn rằng không có giá trị mặc định cho các thông số tùy chọn

Bước 2: Đặt tham số tùy chọn mà không sử dụng 'null'

  • Bật "Cho phép giá trị trống" f hoặc các thông số tùy chọn
  • Sửa đổi của bạn mệnh đề where cho các thông số tùy chọn để WHERE (@param="" OR column = @param)

Với phương pháp này có những trường bổ sung cho người dùng cuối phải lo lắng về, báo cáo sẽ không bắn cho đến khi nó được yêu cầu, và các điều kiện trong mệnh đề where sẽ không được đánh giá nếu hộp văn bản bị bỏ trống.


lưu ý: nếu báo cáo xác định giá trị có sẵn sau đó bất kỳ giá trị mà không có giá trị trong cấu trúc bảng của bạn có thể được sử dụng thay cho "", bạn cũng có thể sử dụng với các loại dữ liệu khác (không dây) theo cách này

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