2010-06-22 3 views
33

मैं अक्सर एमएस एक्सेल के Get External Data का उपयोग सरल रिपोर्ट बनाने के लिए करता हूं - डेटाबेस के खिलाफ चल रहे प्रश्न और एक्सेल में अच्छी तरह से प्रदर्शित करना। एक्सेल की उत्कृष्ट विशेषताएं जैसे फ़िल्टरिंग और पिवट टेबल और उपयोगकर्ताओं के लिए परिचित इंटरफ़ेस इसे इसके लिए काफी अच्छा बनाता है। हालांकि, माइक्रोसॉफ्ट क्वेरी के साथ एक सीमा यह है कि आप उन प्रश्नों के पैरामीटर नहीं जोड़ सकते हैं जिन्हें ग्राफिकल रूप से प्रदर्शित नहीं किया जा सकता है, जो आपके द्वारा लिखे गए एसक्यूएल को काफी सीमित करता है।एक्सेल में बाहरी डेटा क्वेरी में पैरामीटर कैसे जोड़ें, जिसे ग्राफिकल रूप से प्रदर्शित नहीं किया जा सकता है?

क्या त्रुटि के लिए कोई समाधान है "क्वेरी में पैरामीटर की अनुमति नहीं है जिसे ग्राफिकल रूप से प्रदर्शित नहीं किया जा सकता"?

उत्तर

5

यदि आपके पास एक्सेल 2007 है तो आप वर्कबुक में कनेक्शन को बदलने के लिए वीबीए लिख सकते हैं (यानी बाहरी डेटा प्रश्न) और कमांडटेक्स्ट प्रॉपर्टी को अपडेट करें। यदि आप बस ? जोड़ते हैं जहां आप पैरामीटर चाहते हैं, तो अगली बार जब आप डेटा रीफ्रेश करेंगे तो यह कनेक्शन के मानों के लिए संकेत देगा! जादू। जब आप कनेक्शन के गुणों को देखते हैं तो पैरामीटर्स बटन अब सक्रिय और सामान्य के रूप में उपयोग योग्य होगा।

उदा। मैं एक मैक्रो लिखता हूं, डीबगर में इसके माध्यम से कदम उठाता हूं, और इसे कमान टेक्स्ट को उचित रूप से सेट करता हूं। एक बार ऐसा करने के बाद आप मैक्रो को हटा सकते हैं - यह क्वेरी को अपडेट करने का सिर्फ एक माध्यम है।

Sub UpdateQuery 
    Dim cn As WorkbookConnection 
    Dim odbcCn As ODBCConnection, oledbCn As OLEDBConnection 
    For Each cn In ThisWorkbook.Connections 
     If cn.Type = xlConnectionTypeODBC Then 
      Set odbcCn = cn.ODBCConnection 

      ' If you do have multiple connections you would want to modify 
      ' the line below each time you run through the loop. 
      odbcCn.CommandText = "select blah from someTable where blah like ?" 

     ElseIf cn.Type = xlConnectionTypeOLEDB Then 
      Set oledbCn = cn.OLEDBConnection 
      oledbCn.CommandText = "select blah from someTable where blah like ?" 
     End If 
    Next 
End Sub 
-1

हां - समाधान एक्सएमएल फ़ाइल में कार्यपुस्तिका को बचाने के लिए ('एक्सएमएल स्प्रैडशीट 2003' जैसे।) और नोटपैड में पाठ के रूप में इस फ़ाइल को संपादित है! क्वेरी टेक्स्ट खोजने के लिए नोटपैड के "खोज" फ़ंक्शन का उपयोग करें और अपना डेटा "?" में बदलें।

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

22

आसान वर्कअराउंड (कोई VBA आवश्यक)

  1. ठीक है,, तालिका पर क्लिक करें विस्तार "तालिका" संदर्भ मनु चुनें "बाहरी डेटा गुण"
  2. क्लिक बटन "कनेक्शन गुण" (टूलटिप में लेबल की गई)
  3. जाओ करने के टैब "परिभाषा"

यहाँ से, जोड़कर सीधे एसक्यूएल संपादित '?' जहां भी आप एक पैरामीटर चाहते हैं। जैसा कि आप को नाराज नहीं करते हैं, वैसे ही वैसे ही काम करता है।

+2

धन्यवाद! यह एक उत्कृष्ट समाधान है --- त्वरित, आसान, कोई नाग, और सीधे एक्सेल सेल का चयन करने की अनुमति देता है जो पैरामीटर को पकड़ लेगा। ** मुझे लगता है कि यह स्वीकार्य उत्तर होना चाहिए ** –

+0

मुझे मिलने से कुछ और कदम हैं, लेकिन मुझे यह जवाब सबसे उपयोगी पाया गया। यहां से मैं इसके साथ खेल सकता था। धन्यवाद! –

+0

जब भी मैं इस समाधान का प्रयास करता हूं, एक्सेल लटकता है। यदि मैं विशिष्ट स्पष्ट मान देता हूं, तो यह ठीक काम करता है। लेकिन फिर पैरामीटर जोड़ने की कोशिश कर रहा है, यह सिर्फ लटकता है और दुर्घटनाग्रस्त हो जाता है! – jamiebarrow

45

एसक्यूएल सर्वर क्वेरी के लिए एक्सेल ' एस इंटरफेस   आपको कस्टम पैरामीटर नहीं देगा।   इसके आसपास एक तरीका सामान्य जेनर   माइक्रोसॉफ्ट क्वेरी बनाने के लिए है, फिर पैरामीटर जोड़ें, फिर ' एस गुणों में अपनी पैरामीरेटेड क्वेरी पेस्ट करें।   यहाँ Excel 2010 के लिए विस्तृत चरण हैं:

  1. ओपन एक्सेल
  2. गोटो डाटा टैब
  3. से
  4. अन्य स्रोतों से बटन माइक्रोसॉफ्ट क्वेरी से चुनें
  5. " चुनें डेटा स्रोत " विंडो दिखाई देगी।   डेटास्रोत चुनें और ठीक पर क्लिक करें।
  6. क्वेरी कज़ार्ड
    1. कॉलम चुनें: विंडो दिखाई देगी।   लक्ष्य एक सामान्य क्वेरी बनाना है। मैं एक छोटी तालिका से एक कॉलम चुनने की सलाह देते हैं।
    2. फ़िल्टर डाटा: बस क्लिक करें अगला
    3. क्रम विन्यास: बस क्लिक अगला
    4. समाप्त: बस क्लिक करें समाप्त
  7. " डेटा आयात " खिड़की दिखाई देगा:
    1. क्लिक करें गुण ... बटन।
      1. चुनें परिभाषा टैब
      2. " कमान पाठ में: " अनुभाग एक   कहां   खंड   कि एक्सेल पैरामीटर शामिल जोड़ें।       सभी पैरामीटर जो   जोड़ना चाहते हैं,   जोड़ने के लिए ' महत्वपूर्ण है।   उदाहरण के लिए, यदि मुझे दो पैरामीटर चाहिए तो मैं इसे जोड़ सकता हूं:
        कहां 1 =? और 2 =? ठीक वापस " डेटा आयात " खिड़की
    2. करने के लिए मिलता PivotTable रिपोर्ट
    3. चुनें पर क्लिक करें करने के लिए
    4. क्लिक करें ठीक
  8. आप प्रत्येक पैरामीटर के लिए मानकों को मान दर्ज करने के लिए प्रेरित किया जाएगा ।
  9. एक बार जब आप मापदंड दर्ज है आप
  10. जाओ डाटा टैब पर batck और गुण बटन पर क्लिक करें कनेक्शन अपनी पाइवट टेबल पर होगा
    1. परिभाषा टैब
    2. में क्लिक करें " कमांड टेक्स्ट: " सेक्शन, असली SQL क्वेरी में चिपकाएं जो आप पहले परिभाषित पैरामीटर के साथ चाहते हैं।
    3. पैरामीटर पर क्लिक करें ... बटन  
      1. प्रत्येक पैरामीटर
      2. क्लिक करें ठीक
    4. क्लिक करें ठीक गुण खिड़की
  11. को बंद करने के लिए संकेत मान दर्ज बधाई हो, अब आपके पास पैरामीटर हैं।
+0

क्या आप SQL सर्वर क्वेरी में पैरामीटर जोड़ने के लिए ऐसा कर सकते हैं? यानी एक एसक्यूएल सर्वर डीबी से कनेक्शन? – Dan

+0

शानदार। मैंने हमेशा सोचा है कि वहां उन पैरामीटर कैसे प्राप्त करें। –

+0

ठीक काम कर रहा है लेकिन इसमें कुछ समस्याएं हैं। अगर मैं कुछ पाठ डालता हूं, तो यह ठीक काम कर रहा है जैसे कल्पना? कमांड टेक्स्ट और सेल में 'foobar' में, लेकिन foo% का उपयोग नहीं करता –