एक ओडीबीसी डेटा स्रोत के खिलाफ एमएस रिपोर्टिंग सर्विसेज (एसक्यूएल सर्वर 2008) में पैरामीटर का उपयोग करना

मैं विजुअल स्टूडियो में एक रिपोर्ट लिख रहा हूं जो उपयोगकर्ता इनपुट पैरामीटर लेता है और ओडीबीसी डेटासोर्स के खिलाफ चलता है। मैं मैन्युअल रूप से क्वेरी लिखना चाहता हूं और डेटाबेस में भेजने से पहले पैरामीटर मान के साथ खंड के भाग को प्रतिस्थापित करने के लिए रिपोर्टिंग सेवाएं हैं। ऐसा प्रतीत होता है कि @parmName मुझे लगता है कि प्रतिस्थापित किया जाएगा वास्तव में SQL कथन के हिस्से के रूप में भेजा जा रहा है। क्या मुझे कहीं कॉन्फ़िगरेशन सेटिंग याद आ रही है या क्या यह संभव नहीं है?

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

0
ro fr bn

4 उत्तर

क्या ओडीबीसी पुराने "?" का उपयोग नहीं करता पैरामीटर के लिए वाक्यविन्यास? इसे इस्तेमाल करे:

select col1, col2 from table1 where col3 = ?

आपके पैरामीटर का क्रम तब महत्वपूर्ण हो जाता है, लेकिन यह पैरामीटर मान को जोड़ने से SQL इंजेक्शन के लिए कम संवेदनशील है।

0
जोड़ा

मैं इस प्रश्न के बारे में थोड़ा उलझन में हूं, यदि आप सरल पैरामीटर उपयोग की तलाश में हैं तो नोटेशन है: * paramName * , हालांकि यदि आप संरचनात्मक रूप से WHERE खंड को बदलना चाहते हैं (जैसा कि आप एसक्यूएल + में उपयोग कर सकते हैं?) तो आपको वास्तव में रिपोर्ट के भीतर कस्टम कोड का उपयोग करना चाहिए ताकि एक फ़ंक्शन को परिभाषित किया जा सके जो क्वेरी के लिए आवश्यक एसक्यूएल देता है।

दुर्भाग्यवश, कस्टम कोड का उपयोग करते समय, पैरामीटर को सीधे जेनरेट की गई क्वेरी में संदर्भित नहीं किया जा सकता है, लेकिन परिणामस्वरूप स्ट्रिंग में समेकित मूल्य होना चाहिए, इस प्रकार SQL इंजेक्शन के लिए संभावित क्षमता को पेश करना।

0
जोड़ा

ऐसा लगता है कि आपको SQL कथन का अभिव्यक्ति के रूप में व्यवहार करने की आवश्यकता होगी। उदाहरण के लिए:

="Select col1, col2 from table 1 Where col3 = " & Parameters!Param1.Value 

यदि जहां खंड एक स्ट्रिंग है तो आपको निम्न कार्य करने की आवश्यकता होगी:

="Select col1, col2 from table 1 Where col3 = '" & Parameters!Param1.Value & "'"

महत्वपूर्ण: अपनी SQL अभिव्यक्ति में लाइन ब्रेक का उपयोग न करें। यदि आप करते हैं तो आपको एक त्रुटि मिल जाएगी।

यदि आपको कोई और सहायता चाहिए तो होला वापस आएं।

0
जोड़ा

ओडीबीसी के माध्यम से एक्सेस डेटाबेस से पूछताछ करने का प्रयास करने में एक ही समस्या उत्पन्न हुई।

मेरी मूल क्वेरी: A.1 से चुनें A.1 = @parameter त्रुटि हुई। इसमें बदला गया: A.1 =? से A.1 चुनें।

फिर आपको अपने रिपोर्ट पैरामीटर के साथ क्वेरी पैरामीटर को मैप करना होगा।

0
जोड़ा