SQL Server Reporting Services 2005 - كيفية التعامل مع التقارير الفارغة
-
03-07-2019 - |
سؤال
كنت أتساءل عما إذا كان من الممكن عدم إرفاق ورقة Excel إذا كانت فارغة ، وربما اكتب تعليقًا مختلفًا في البريد الإلكتروني إذا كان فارغًا.
عندما أذهب للإبلاغ عن خيارات التسليم ، لا يوجد مثل هذا التكوين.
يحرر: أقوم بتشغيل SQL Server Reporting Services 2005.
بعض الحلول الممكنة كما هو مذكور أدناه:
يجب أن أنظر في هذه الأشياء.
المحلول
أعتقد أن الجواب لا ، على الأقل ليس خارج الصندوق. لا ينبغي أن يكون من الصعب كتابة امتداد التسليم الخاص بك بالنظر إلى عينة تمديد تسليم الطباعة المدرجة في RS.
نصائح أخرى
نعم ، لا أعتقد أن هذا ممكن. يمكنك استخدام خاصية "Norows" لجدولك لعرض رسالة عند عدم إرجاع أي بيانات ، لكن ذلك لن يمنع التقرير من إرفاقه. ولكن على الأقل عندما فتحوا ملف Excel ، يمكنه طباعة رسالتك المخصصة بدلاً من مستند فارغ.
وجدت هذا في مكان آخر ...
لديّ حل نظيف لهذه المشكلة ، الجانب الوحيد هو أنه يجب على مسؤول النظام إنشاء الجدول الزمني والحفاظ عليه. جرب هذه الخطوات:
إنشاء اشتراك للتقرير مع جميع المستلمين المطلوبين.
قم بتعيين الاشتراك في Run Week في يوم الأمس (أي إذا كان اليوم يوم الثلاثاء ، حدد الاثنين) مع بدء الجدول الزمني في تاريخ اليوم والتوقف في تاريخ اليوم. في الأساس ، لن يعمل هذا الجدول أبدًا.
افتح الوظيفة التي تم إنشاؤها حديثًا في SQL Management Studio ، انتقل إلى الخطوات ونسخ سطر SQL (سيبدو شيئًا من هذا القبيل: execritive reporterver.dbo.addevent @eventtype = 'timedSubscription' ، eventData = '1C2D9808-AA22-4597 -6191-F152D7503FFF ')
قم بإنشاء وظيفتك الخاصة في 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
ثم استخدم هذه الأعمدة في الحقول المناسبة عند تكوين إعدادات التسليم للاشتراك.