2008-10-01 9 views
5

मैं सोच रहा था कि अगर यह खाली है तो Excel शीट को अटैचमेंट करना संभव नहीं है, और यदि खाली हो तो ईमेल में एक अलग टिप्पणी लिखें।एसक्यूएल सर्वर रिपोर्टिंग सर्विसेज 2005 - खाली रिपोर्ट को कैसे संभालें

जब मैं डिलीवरी विकल्पों की रिपोर्ट करता हूं, तो ऐसी कोई कॉन्फ़िगरेशन नहीं होती है।

संपादित:

MSDN: Reporting Services Extensions

NoRows and NoRowsMessage properties

मैं इन बातों पर गौर करना चाहिए: मैं एसक्यूएल सर्वर सेवा 2005

कुछ संभावित समाधानों रिपोर्टिंग नीचे वर्णित के रूप में चल रहा हूँ।

उत्तर

1

मुझे विश्वास है कि उत्तर कम से कम बॉक्स से बाहर नहीं है। आरएस में शामिल प्रिंटिंग डिलीवरी विस्तार नमूना दिए जाने पर अपना खुद का वितरण विस्तार लिखना मुश्किल नहीं होना चाहिए।

+0

विस्तार के बारे में उल्लेख करने के लिए धन्यवाद। –

1

हाँ, मुझे नहीं लगता कि यह संभव है। जब कोई डेटा वापस नहीं किया जाता है तो आप संदेश प्रदर्शित करने के लिए अपनी तालिका की "NoRows" प्रॉपर्टी का उपयोग कर सकते हैं, लेकिन इससे रिपोर्ट को संलग्न होने से रोका नहीं जा सकता है। लेकिन कम से कम जब उन्होंने एक्सेल फ़ाइल खोला तो यह एक खाली दस्तावेज़ के बजाय अपना कस्टम संदेश प्रिंट कर सकता था।

+0

मुझे "NoRows" संपत्ति के बारे में बताने के लिए धन्यवाद। –

0

मैं एक डेटा संचालित सदस्यता और एक तालिका का उपयोग कर मेरी ग्राहकों युक्त, डेटा के आधार पर सदस्यता क्वेरी इस तरह लग रही के साथ साथ सफलता मिली है:

SELECT * FROM REPORT_SUBSCRIBERS WHERE EXISTS (SELECT QUERY_FROM_YOUR_REPORT) 

वितरण सेटिंग में, प्राप्तकर्ता डेटा है कॉलम में मेरे ईमेल पते हैं।
यदि आंतरिक क्वेरी कोई पंक्ति नहीं लौटाती है, तो कोई ईमेल नहीं भेजा जाएगा।


अपने उद्देश्यों के लिए, आप "रिपोर्ट शामिल करें" और "टिप्पणी" वितरण सेटिंग्स का लाभ उठा सकते हैं।
मैं कल्पना है कि इस तरह एक डेटा पर ही आधारित सदस्यता क्वेरी आप के लिए काम करेंगे:

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 

फिर जब सदस्यता के लिए वितरण सेटिंग के उचित खाने में उन स्तंभों का उपयोग करें।

1

इस कहीं और ...

मैं इस समस्या के लिए एक साफ समाधान है, केवल नीचे की ओर है कि एक सिस्टम व्यवस्थापक बना सकते हैं और अनुसूची को बनाए रखने चाहिए। इन चरणों का प्रयास करें:

  1. सभी आवश्यक प्राप्तकर्ताओं के साथ रिपोर्ट के लिए सदस्यता बनाएं।

  2. आज की तारीख से शुरू होने वाले शेड्यूल के साथ कल की तारीख (यानी आज मंगलवार है, सोमवार का चयन करें) पर साप्ताहिक चलाने के लिए सदस्यता सेट करें और आज की तारीख को रोक दें। अनिवार्य रूप से, यह कार्यक्रम कभी नहीं चलेगा।

  3. एसक्यूएल प्रबंधन स्टूडियो में नव निर्मित नौकरी खोलें, चरणों पर जाएं और एसक्यूएल की लाइन कॉपी करें (यह इस तरह कुछ दिखाई देगा: EXEC ReportServer.dbo।AddEvent @ EventType = 'TimedSubscription', @ EventData = '1c2d9808-aa22-4597-6191-f152d7503fff')

  4. वास्तविक अनुसूची के साथ एसक्यूएल में अपने स्वयं के कार्य बनाएं और की तरह कुछ का उपयोग करें:

अगर मौजूद है (अपने परीक्षण मानदंड का चयन करें ...)

शुरू

EXEC ReportServer.dbo.AddEvent @EventType = ... आदि

अंत

संबंधित मुद्दे