2012-11-27 16 views
7

में फ़ील्ड्स का उपयोग नहीं किया जा सकता है मुझे रिपोर्ट पैरामीटर के आधार पर मेरी रिपोर्ट के start_date सेट करना होगा। टाइम स्टैम्प की गणना डेटाबेस क्वेरी में की जाती है।रिपोर्ट पैरामीटर अभिव्यक्ति

मेरे अभिव्यक्ति इस तरह दिखता है:

एक मूल्य रिपोर्ट पैरामीटर 'time_from' के लिए इस्तेमाल किया अभिव्यक्ति एक क्षेत्र को संदर्भित करता है:

=SWITCH (
    Parameters!report_type.Value = 1,First(Fields!daily_start.Value, "Timestamps") 
    ,Parameters!report_type.Value = 2,First(Fields!weekly_start.Value, "Timestamps") 
    ,Parameters!report_type.Value = 3,First(Fields!monthly_start.Value, "Timestamps") 
) 

दुर्भाग्य से मैं त्रुटि संदेश मिलता है। रिपोर्ट पैरामीटर अभिव्यक्ति

मुझे पता है कि यह अनुमति नहीं है क्योंकि एसएसआरएस यह सुनिश्चित नहीं कर सकता कि किस क्रम में डेटासेट कहा जाता है। लेकिन मुझे लगता है कि यह खतरनाक नहीं है।

सभी समय टिकटें पैरामीटर के बिना क्वेरी द्वारा प्राप्त की जाती हैं। रिपोर्ट उत्पन्न होने से पहले पैरामीटर report_type किसी उपयोगकर्ता द्वारा चुना जाता है।

क्या कोई मुझे कामकाज के लिए संकेत दे सकता है?

+1

आप क्षेत्रों के अपने daily_start, weekly_start के लिए छिपा पैरामीटर तय किया जा सका उपयोग करते हैं, मासिक के बजाय? – jbl

उत्तर

3

यहां कामकाज है - एसक्यूएल का उपयोग करके मूल्य प्राप्त करें।

एक नया डेटासेट StartDates बुलाया बनाएँ:

SELECT CASE 
    WHEN @report_type = 1 THEN daily_start 
    WHEN @report_type = 2 THEN weekly_start 
    WHEN @report_type = 3 THEN monthly_start 
END AS StartDate 
FROM MyTable 

आप पहले से ही @report_type और @time_from पैरामीटर शामिल हैं। @time_from पैरामीटर के साथ, स्टार्टडेट्स डेटासेट और वैल्यू फ़ील्ड स्टार्टडेट का उपयोग करके अपने डिफ़ॉल्ट मान Get values from a query पर सेट करें।

अब, आपको लगता है कि यह काम करने के लिए पर्याप्त हो सकता है - आप इस क्वेरी को डिफ़ॉल्ट मान के रूप में संदर्भित कर रहे हैं और जैसे ही आप @report_type पैरामीटर को अन्य पैरामीटर रीफ्रेश करते हैं, लेकिन @time_from पैरामीटर में पहली तारीख कभी नहीं परिवर्तन। ऐसा इसलिए है क्योंकि उपलब्ध मान क्वेरी पर रीफ्रेश होता है, डिफ़ॉल्ट मान क्वेरी पर नहीं।

तो आपको स्टार्टडेट्स क्वेरी में उपलब्ध मान क्वेरी को तार करने की भी आवश्यकता है। अब आपकी क्वेरी @report_type के परिवर्तन पर आग लग जाएगी और डिफ़ॉल्ट मान आपके चयन के लिए उचित तिथि पर सेट हो जाएगा।

+1

क्या हुआ अगर मैं केवल fetchxml में ऐसा कर सकते हैं? –

0

मैंने एक क्वेरी से संग्रहित प्रक्रिया में स्विच किया और यह त्रुटि प्राप्त हो रही थी। चीजें मैंने कोशिश की:

  • यह सुनिश्चित किया मैं डेटाबेस पर पर्याप्त अनुमति थी
  • मौजूदा मानकों हटाएँ (और उसके बाद ताज़ा करने के लिए ताज़ा क्षेत्रों का उपयोग (आप तेह sproc चलाने के लिए EXEC अधिकार या डीबीओ की जरूरत है)/सही तरीके से नाम मिल लोगों को वापस)
  • संग्रहीत प्रक्रिया चारों ओर वर्ग कोष्ठक यदि आपने उल्लेख किया निकालें कि
+0

निकाला जा रहा है वर्ग कोष्ठक में मदद की, धन्यवाद! – ConstantineK

0

कभी कभी, भाव एक सा वर्बोज़ मिल सकती है। मैंने एक रिपोर्ट कोड फ़ंक्शन बनाया है और फिर पैरामीटर मान के रूप में उपयोग किया है।

उदाहरण के लिए, मैं "CalculateDateSet" नामक एक कोड समारोह बनाई और फिर इस अभिव्यक्ति के लिए रिपोर्ट पैरामीटर सेट करें:

"= Code.CalculateDateSet (पैरामीटर Month.Value, पैरामीटर साल!।मान "

+0

तुम इतनी तरह के रूप में हो सकता है अपने प्रस्तावित कामकाज पर थोड़ा सा विस्तार करें? – user3285866