2008-10-01 30 views
5

Tôi đã tự hỏi nếu có thể không đính kèm trang tính Excel nếu nó trống và có thể viết một nhận xét khác trong email nếu trống.Dịch vụ báo cáo SQL Server 2005 - Cách xử lý các báo cáo trống

Khi tôi đi đến báo cáo tùy chọn phân phối, không có cấu hình như vậy.

Sửa: Tôi đang chạy SQL Server Reporting Services 2005.

Một số cách giải quyết tốt như đã đề cập dưới đây:

MSDN: Reporting Services Extensions

NoRows and NoRowsMessage properties

tôi nên nhìn vào những điều này.

Trả lời

1

Tôi tin rằng câu trả lời là không, ít nhất là không ra khỏi hộp. Sẽ không khó để viết phần mở rộng giao hàng của riêng bạn cho mẫu mở rộng phân phối in bao gồm trong RS.

+0

Cảm ơn bạn đã đề cập đến tiện ích. –

1

Vâng, tôi không nghĩ điều đó là có thể. Bạn có thể sử dụng thuộc tính "NoRows" của bảng để hiển thị thông báo khi không có dữ liệu được trả về, nhưng điều đó sẽ không ngăn không cho báo cáo được đính kèm. Nhưng ít nhất là khi họ mở tập tin excel nó có thể in ra thông báo tùy chỉnh của bạn thay vì một tài liệu trống.

+0

Cảm ơn bạn đã cho tôi biết về tài sản "NoRows". –

0

Tôi đã thành công với việc sử dụng một đăng ký theo hướng dữ và một bảng chứa các thuê bao của tôi, với truy vấn thuê bao dựa trên dữ liệu tìm kiếm như thế này:

SELECT * FROM REPORT_SUBSCRIBERS WHERE EXISTS (SELECT QUERY_FROM_YOUR_REPORT) 

Trong cài đặt giao hàng, người nhận là dữ liệu cột chứa địa chỉ email của tôi.
Nếu truy vấn bên trong không trả về hàng, thì sẽ không có email nào được gửi.


Vì mục đích của bạn, bạn có thể tận dụng cài đặt phân phối "Bao gồm báo cáo" và "Nhận xét".
Tôi tưởng tượng rằng một truy vấn thuê bao dựa trên dữ liệu như thế này sẽ làm việc cho bạn:

SELECT '[email protected]; [email protected]' AS RECIPIENTS, 
CASE WHEN EXISTS (REPORT_QUERY) THEN 'TRUE' ELSE 'FALSE' END AS INCLUDE_REPORT, 
CASE WHEN EXISTS (REPORT_QUERY) THEN 'The report is attached' ELSE 'There was no data in this report' END AS COMMENT 

Sau đó sử dụng các cột trong các lĩnh vực thích hợp khi cấu hình các thiết lập giao hàng cho các thuê bao.

1

Tìm thấy ở một nơi khác ...

tôi có một giải pháp sạch cho vấn đề này, chỉ xuống bên là một quản trị viên hệ thống phải tạo ra và duy trì lịch trình. Hãy thử các bước sau:

  1. Tạo đăng ký cho báo cáo với tất cả những người nhận được yêu cầu.

  2. Đặt đăng ký chạy hàng tuần vào ngày hôm qua (ví dụ: nếu hôm nay là Thứ Ba, chọn Thứ Hai) với lịch bắt đầu vào ngày hôm nay và dừng vào ngày hôm nay. Về cơ bản, lịch trình này sẽ không bao giờ chạy.

  3. Mở công việc mới tạo trong SQL Management Studio, chuyển đến các bước và sao chép dòng SQL (nó sẽ trông giống như sau: EXEC ReportServer.dbo.AddEvent @ eventType = 'TimedSubscription', @ EventData = '1c2d9808-aa22-4597-6191-f152d7503fff')

  4. Tạo công việc của riêng bạn trong SQL với tiến độ thực tế và sử dụng cái gì đó như:

NẾU EXISTS (SELECT tiêu chuẩn thử nghiệm của bạn ...)

BEGIN

EXEC ReportServer.dbo.AddEvent @EventType = ... vv

END

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