SQL Server Reporting Services 2005 - كيفية التعامل مع التقارير الفارغة

StackOverflow https://stackoverflow.com/questions/158431

سؤال

كنت أتساءل عما إذا كان من الممكن عدم إرفاق ورقة Excel إذا كانت فارغة ، وربما اكتب تعليقًا مختلفًا في البريد الإلكتروني إذا كان فارغًا.

عندما أذهب للإبلاغ عن خيارات التسليم ، لا يوجد مثل هذا التكوين.

يحرر: أقوم بتشغيل SQL Server Reporting Services 2005.

بعض الحلول الممكنة كما هو مذكور أدناه:

MSDN: إضافات التقارير

خصائص Norows و NorowsMessage

يجب أن أنظر في هذه الأشياء.

هل كانت مفيدة؟

المحلول

أعتقد أن الجواب لا ، على الأقل ليس خارج الصندوق. لا ينبغي أن يكون من الصعب كتابة امتداد التسليم الخاص بك بالنظر إلى عينة تمديد تسليم الطباعة المدرجة في RS.

نصائح أخرى

نعم ، لا أعتقد أن هذا ممكن. يمكنك استخدام خاصية "Norows" لجدولك لعرض رسالة عند عدم إرجاع أي بيانات ، لكن ذلك لن يمنع التقرير من إرفاقه. ولكن على الأقل عندما فتحوا ملف Excel ، يمكنه طباعة رسالتك المخصصة بدلاً من مستند فارغ.

وجدت هذا في مكان آخر ...

لديّ حل نظيف لهذه المشكلة ، الجانب الوحيد هو أنه يجب على مسؤول النظام إنشاء الجدول الزمني والحفاظ عليه. جرب هذه الخطوات:

  1. إنشاء اشتراك للتقرير مع جميع المستلمين المطلوبين.

  2. قم بتعيين الاشتراك في Run Week في يوم الأمس (أي إذا كان اليوم يوم الثلاثاء ، حدد الاثنين) مع بدء الجدول الزمني في تاريخ اليوم والتوقف في تاريخ اليوم. في الأساس ، لن يعمل هذا الجدول أبدًا.

  3. افتح الوظيفة التي تم إنشاؤها حديثًا في SQL Management Studio ، انتقل إلى الخطوات ونسخ سطر SQL (سيبدو شيئًا من هذا القبيل: execritive reporterver.dbo.addevent @eventtype = 'timedSubscription' ، eventData = '1C2D9808-AA22-4597 -6191-F152D7503FFF ')

  4. قم بإنشاء وظيفتك الخاصة في SQL مع الجدول الفعلي واستخدام شيء مثل:

إذا كانت موجودة (حدد معايير الاختبار ...)

يبدأ

exec reportererver.dbo.adDeventEventType = ... إلخ.

نهاية

لقد نجحت في استخدام اشتراك يعتمد على البيانات وجدول يحتوي على المشتركين ، مع استعلام الاشتراك القائم على البيانات يبدو مثل هذا:

SELECT * FROM REPORT_SUBSCRIBERS WHERE EXISTS (SELECT QUERY_FROM_YOUR_REPORT)

في إعدادات التسليم ، يكون المستلم هو عمود البيانات الذي يحتوي على عناوين البريد الإلكتروني الخاصة بي.
إذا كان الاستعلام الداخلي لا يعيد أي صفوف ، فلن يتم إرسال أي رسائل بريد إلكتروني.


لأغراضك ، يمكنك الاستفادة من إعدادات تسليم "تضمين" و "تعليق".
أتصور أن استعلام الاشتراك الذي يعتمد على البيانات مثل هذا سيعمل من أجلك:

SELECT 'person1@domain.com; person2@domain.com' 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

ثم استخدم هذه الأعمدة في الحقول المناسبة عند تكوين إعدادات التسليم للاشتراك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top